打印指定的扩展文件

时间:2012-08-14 14:56:17

标签: java string

我要编写一个代码,在String []中输入文件名作为输入,并返回扩展名为“.java”的所有文件。

这是我的代码:

    public String[] getJavaFiles(String[] fileNames){
    int l=fileNames.length;
    int count=0;
    int l2,i=0;
    String s;
    String dummy[]=new String[l];
    for (i=0; i<l; i++){
        s=fileNames[i];
        if ( s.endsWith(".java"))
            {
            dummy[i-count]=s;
            count++;
            }
        }
    String javaFileNames[]=new String[count];
    for (i=0; i<count; i++){
        javaFileNames[i]=dummy[i];
        }
    return (javaFileNames);
    }
}

我收到了这个输出:

can.java
and.java
can.java
and.java.java
and.java.xys.pdf.java.doc.java
[Ljava.lang.String;@67d479cf

我的问题是:我得到的最后一行是什么?: 的 [Ljava.lang.String; @ 67d479cf

4 个答案:

答案 0 :(得分:3)

您可以使用endsWith

检查String的结尾
if(s.endsWith(".java"))

您可以使用Arrays.toString打印数组

System.out.println(Arrays.toString(javaFileNames));

你必须这样做,因为数组作为普通对象不是很有用,例如toString,notify,wait,equals,hashCode不对数组做任何非常有用的事情。

使用List

可能更好
List<String> javaNames = new ArrayList<>();
for (int i=0; i<l; i++)
    if (fileNames[i].endsWith(".java"))
        javaNames.add(fileNames[i]);
System.out.println(javaNames);
return javaNames.toArray(new String[javaNames.size()]);

答案 1 :(得分:0)

使用String.endsWith。这很简单:

String[] files = {"file1.java", "file2.java"};
for(String f: files)
     if(f.endsWith(".java"))
          System.out.println(f);

答案 2 :(得分:0)

你得到 [Ljava.lang.String; @ 67d479cf 作为默认的toString()方法的结果,在Object类中定义,当你执行数组的System.out.println时调用

 public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

您的对象是一个数组,默认情况下,java不会'toStringify'其内容。

答案 3 :(得分:0)

这是一个哈希码字符串。你不应该直接打印数组。从数组javaFileNames中取出值并打印。

for(int i = 0;  i < javaFileNames.length; i++)
    System.out.println(javaFileNames[i]);