任何人都可以解释为什么这不会编译?这个循环不断移动ref.'人'到一个新创建的对象,这似乎工作正常.在循环结束时,从文件读入的最后一行应该由'person'引用,并且它的方法应该可以在此循环之外访问,对吧?
while ((line = file.readLine()) != null) {
Person person = new Person(line);
//do
}
System.out.println(person.getSmoker());
Run Code Online (Sandbox Code Playgroud)
编译器输出:
Query.java:29: cannot find symbol
symbol : variable person
location: class Query
System.out.println(person.getSmoker());
^
Run Code Online (Sandbox Code Playgroud)
答案必须是否定的,但我无法弄清楚为什么(我认为我的对象/堆等理解正在某处)
谢谢你的帮助
我需要确定一个非常大的字符编码文件的大小.读取该文件需要花费大量时间.
我的理解是,当首次创建/修改文件时,大小会被缓存,因此操作系统可以在请求大小时(例如,文件管理器)快速检索该值.(例如,在win explorer中打开大文件的属性对话框时似乎很快)
假设以上情况属实,可以用Java检索吗?我原以为length()读取文件来确定大小......或者它实际上是否获得了这个缓存的大小?或者,File对象的创建是否会读取/检索缓存的大小?
我自己的研究还没有能够回答这些问题.
我理解我会得到一些帮助
谢谢
我正在读取一个csv文件并从每行的字段创建一个Person对象,一行代表一个人.正在读入的字符串放在一个数组中,然后将数组元素指定为属性.
通过在这段代码之前和之后放置print语句,我发现'smoker'属性被设置为false,而不管数组元素的'true'或'false'字符串值.
if(person_array[7] == "true") {this.smoker = true;}
else {this.smoker = false;}
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
谢谢
伊恩