Length()有什么问题?

时间:2015-11-26 22:43:57

标签: java

我有一个针对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.");
        }
    }
}
}

4 个答案:

答案 0 :(得分:2)

在处理数组时,需要使用.length字段,没有方法Length()。 你可以在你的代码.Length()中替换.length然后就可以了。

但是也要注意,在最后一个System.out语句中,在循环的else块中,数组的类型为File [],因此每个元素都是一个File。文件有一个方法长度()(小心),它提供文件的长度为长。

此外,在循环的if块中,数组的File元素提供了方法listFiles()(而不是字段.listFiles),这是一个数组,同样,它有一个字段,长度,给你数组的长度。

我们因此:

  • 一个数组,提供一个字段,长度
  • 一个文件,有一个方法,长度(),大小
  • File类的方法,listFiles(),它返回一个File
  • 数组

这是完全编译(固定)的代码:

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 --- arraysint[], 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/