2

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

4 に答える 4

3

文字列の終わりは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()]);
于 2012-08-14T15:03:15.207 に答える
0

を使用しString.endsWithます。それは単純です:

String[] files = {"file1.java", "file2.java"};
for(String f: files)
     if(f.endsWith(".java"))
          System.out.println(f);
于 2012-08-14T14:59:51.223 に答える
0

配列のSystem.out.printlnを実行するときに呼び出される、Objectクラスで定義されたデフォルトのtoString()メソッドの結果として、[Ljava.lang.String;@67d479cfを取得 します。

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

オブジェクトは配列であり、デフォルトではjavaはそのコンテンツを「toStringify」しません。

于 2012-08-14T15:00:20.437 に答える
0

これはハッシュコード文字列です。配列を直接印刷しないでください。配列から値を取り出してjavaFileNames印刷します。

for(int i = 0;  i < javaFileNames.length; i++)
    System.out.println(javaFileNames[i]);
于 2012-08-14T15:00:37.300 に答える