160

メソッドを使用しようとしていますtoString(int[])が、間違っていると思います:

http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Arrays.html#toString(int[])

私のコード:

int[] array = new int[lnr.getLineNumber() + 1];
int i = 0;

System.out.println(array.toString());

出力は次のとおりです。

[I@23fc4bec

また、このように印刷してみましたが、

System.out.println(new String().toString(array));  // **error on next line**
The method toString() in the type String is not applicable for the arguments (int[])

このコードは、より大きく複雑なコードから取り出しましたが、必要に応じて追加できます。しかし、これは一般的な情報を提供するはずです。

Oracleのドキュメントのように、出力を探しています:

文字列表現は、角括弧 ("[]") で囲まれた配列の要素のリストで構成されます。隣接する要素は、文字 ", " (カンマの後にスペースが続く) で区切られます。

4

8 に答える 8

312

あなたが望むのはArrays.toString(int[])メソッドです:

import java.util.Arrays;

int[] array = new int[lnr.getLineNumber() + 1];
int i = 0;

..      

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

Arrays.toStringJava のプリミティブ型ごとに静的ヘルパー メソッドがあります。のためのものはこれをint[]言います:

public static String toString(int[] a)

指定された配列の内容の文字列表現を返します。文字列表現は、角括弧 ( ) で囲まれた配列の要素のリストで構成されます"[]"", "隣接する要素は文字(カンマの後にスペース) で区切られます。要素は のように文字列に変換されますString.valueOf(int)。null の"null"場合に返します。a

于 2012-06-05T21:05:30.627 に答える
39
System.out.println(array.toString());

次のようにする必要があります。

System.out.println(Arrays.toString(array));
于 2012-06-05T21:05:14.690 に答える
36

@Patrik Mに非常に同意しましたが、Arrays.toStringの問題は、出力に「[」「]」「、」が含まれていることです。したがって、正規表現を使用して、このように outout からそれらを削除するだけです

String strOfInts = Arrays.toString(intArray).replaceAll("\\[|\\]|,|\\s", "");

これで、解析して に戻すことができる文字列ができjava.lang.Numberました。たとえば、

long veryLongNumber = Long.parseLong(intStr);

または、正規表現が嫌いな場合は、Java 8 ストリームを使用できます。

String strOfInts = Arrays
            .stream(intArray)
            .mapToObj(String::valueOf)
            .reduce((a, b) -> a.concat(",").concat(b))
            .get();
于 2015-12-03T16:00:00.370 に答える
23

java.util.Arraysを使用できます。

String res = Arrays.toString(array);
System.out.println(res);

出力:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
于 2012-06-05T21:12:54.087 に答える
17

配列の toString メソッドは、取得しているメモリ アドレスのみを出力します。配列をループして、各項目を単独で出力する必要があります

for(int i : array) {
 System.println(i);
}
于 2012-06-05T21:06:15.800 に答える
3

ここで説明するユーティリティを使用すると、配列に対して取得する文字列表現をより細かく制御できます。

String[] s = { "hello", "world" };
RichIterable<String> r = RichIterable.from(s);
r.mkString();                 // gives "hello, world"
r.mkString(" | ");            // gives "hello | world"
r.mkString("< ", ", ", " >"); // gives "< hello, world >"
于 2012-06-06T06:02:56.370 に答える