我有一个针对uni的java项目,这是我的代码。我有一个Length()的问题。可以请任何人帮助我并发现错误吗?先感谢您。
package mytest;
import java.io.File;
public class MyTest {
public static void main(String[] args) {
File here = new File("");
File[] contents = here.listFiles();
for (int counter = 0; counter < contents.Length(); counter++) {
System.out.println(contents[counter].getName());
}
File directory = here getParentDirectory();
System.out.println("The absolute path is" + directory.getAbsolutePath());
File[] list = directory.listFiles();
System.out.println("Directrory code contains" + list.Length() + "items\n.");
System.out.println("----\n");
for (int i = 0; i < list.Length(); i++) {
if (list[i].isDirectory()) {
System.out.println(list[i].getName() + "is a directory with" + list[i].listFiles.Length + "elements");
} else {
System.out.println(list[i].getName() + "has a size of" + list[i].Length() + "bytes.");
}
}
}
}
答案 0 :(得分:2)
在处理数组时,需要使用.length字段,没有方法Length()。 你可以在你的代码.Length()中替换.length然后就可以了。
但是也要注意,在最后一个System.out语句中,在循环的else块中,数组的类型为File [],因此每个元素都是一个File。文件有一个方法长度()(小心),它提供文件的长度为长。
此外,在循环的if块中,数组的File元素提供了方法listFiles()(而不是字段.listFiles),这是一个数组,同样,它有一个字段,长度,给你数组的长度。
我们因此:
这是完全编译(固定)的代码:
public static void main(String[] args) {
File here = new File("");
File[] contents = here.listFiles();
for (int counter = 0; counter < contents.length; counter++) {
System.out.println(contents[counter].getName());
}
File directory = here.getParentFile();
System.out.println("The absolute path is" + directory.getAbsolutePath());
File[] list = directory.listFiles();
System.out.println("Directrory code contains" + list.length + "items\n.");
System.out.println("----\n");
for (int i = 0; i < list.length; i++) {
if (list[i].isDirectory()) {
System.out.println(list[i].getName() + "is a directory with" + list[i].listFiles().length + "elements");
} else {
System.out.println(list[i].getName() + "has a size of" + list[i].length() + "bytes.");
}
}
}
答案 1 :(得分:1)
问题在于您没有仔细阅读documentation所说的内容:
最后,您可以使用内置的length属性来确定任何数组的大小。
建议的例子是:
System.out.println(anArray.length);
在这种情况下,length
不是方法,而是任何array
的内置属性。因此,尝试调用它将导致错误。
答案 2 :(得分:0)
对于数组应该使用
contents.length ;
但是对于字符串使用
contents.length();
让我首先强调出于类似目的的不同方式。
length
--- arrays
(int[], double[], String[]
)----知道数组的长度。
length()
--- String
相关对象(String, StringBuilde
r等)知道字符串的长度
答案 3 :(得分:0)
.Length(),类方法和基本类型.length之间有很大的区别。在使用字符串时,我们使用.Length()作为类方法。由于字符串存储在后台的类中。要查找数组的长度,请使用.length;因为这实际上在堆内存中搜索。如果您想了解有关此背景原因的更多信息,建议您查看以下链接。
http://www.programcreek.com/2013/04/what-does-a-java-array-look-like-in-memory/