Java 打印指定的扩展名文件
我必须编写一个代码,将文件名作为字符串[]的输入,并返回扩展名为“.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++){
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()]);