Java 打印指定的扩展名文件

Java 打印指定的扩展名文件,java,string,Java,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++){

我必须编写一个代码,将文件名作为字符串[]的输入,并返回扩展名为“.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);
    }
}
我的问题是:我得到的最后一行是什么??:
[Ljava.lang.String;@67d479cf使用
String.endsWith
。它只是:

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

通过在对象类中定义的默认toString()方法,在执行数组的System.out.println时调用,[Ljava.lang.String;@67d479cf

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

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

这是一个哈希代码字符串。您不应该直接打印数组。从数组中取出值
javaFileNames
,然后打印

for(int i = 0;  i < javaFileNames.length; i++)
    System.out.println(javaFileNames[i]);
for(int i=0;i
您可以使用endsWith检查字符串的结尾

if(s.endsWith(".java"))
您可以使用Arrays.toString打印数组

System.out.println(Arrays.toString(javaFileNames));
您必须这样做,因为数组作为普通对象不是很有用,例如toString、notify、wait、equals、hashCode对数组没有任何用处

最好是使用列表

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()]);
List javaNames=new ArrayList();

对于(int i=0;iYou可以简化
if
很多:
if s.endsWith(“.java”){}
。实际上我想返回结果。函数是public String[]getJavaFiles(String[]fileNames){`实际上,函数是
public String[]getJavaFiles(String[]fileNames)
所以我必须返回字符串[]而且不是简单地打印它。但是我不必使用列表。如果不使用列表,就不能这样做吗?我的意思是我的代码中有什么错误?你需要使用数组。toString(数组)打印数组的内容(如上所述;)使用的函数是
public String[]getJavaFiles(String[]filename)
。因此,我必须返回一些内容,而不仅仅是打印。这就是我返回它的原因。返回打印位置后,使用上述代码打印值。
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()]);