小羊也疯狂 2016-12-02 11:00 采纳率: 100%
浏览 1470
已采纳

java 局部变量与全局变量问题

图片说明
整个代码求的是一个文件夹的大小 (文件夹里可能还有文件夹) 用的递归

问题1:原代码是书上例子 结果正确
红色标出的是我自己重写遇到的 结果是很大的负数
按我的理解 size 在方法里面是局部变量 作用整个方法
在外面是类变量 作用整个类
但是在这段代码中应该没什么不同吧,因为我只有一个方法,SIZE意思是固定的
问题2:
第14行的 files != null && 能不能省掉?

代码如下:
import java.io.File;
import java.util.Scanner;
public class Directory{
public static void main(String []args){
System.out.println("Enter a directory of file ") ;
Scanner input = new Scanner (System.in);
String directory = input.nextLine();
System.out.println(getSize(new File(directory)) + "bytes");
}
public static long getSize(File file ){
long size = 0;
if (file.isDirectory()){
File[]files = file.listFiles();
for (int i =0;files != null && i<files.length; i++)
size+=getSize(files[i]);
}
else
size +=file.length();
return size;
}
}

  • 写回答

3条回答 默认 最新

  • 天狼sirius 2016-12-02 15:21
    关注
    1.首先,size这里的含义是每个目录的大小,这个getSize()方法返回的就是每个目录的大小,显然是每个目录一个变量是正确的,使用全局的变量
    

    实际上加了好多遍。自己想想,应该不难想明白。
    2.不能省略null的判断,省略了以后,如果是空目录就会抛出空指针异常。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 宇视监控服务器无法登录
  • ¥15 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
  • ¥50 STM32单片机传感器读取错误
  • ¥50 power BI 从Mysql服务器导入数据,但连接进去后显示表无数据
  • ¥15 (关键词-阻抗匹配,HFSS,RFID标签天线)