私は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のドキュメントのように、出力を探しています。
文字列表現は、角括弧( "[]")で囲まれた配列の要素のリストで構成されています。隣接する要素は、文字「、」(コンマとそれに続くスペース)で区切られています。
欲しいのはArrays.toString(int[])
メソッドです。
import Java.util.Arrays;
int[] array = new int[lnr.getLineNumber() + 1];
int i = 0;
..
System.out.println(Arrays.toString(array));
プリミティブなJava型ごとに静的なArrays.toString
ヘルパーメソッドがあります。 int[]
のためのものはこれを言います :
public static String toString(int[] a)
指定された配列の内容の文字列表現を返します。文字列表現は、角括弧(
"[]"
)で囲まれた配列の要素のリストで構成されています。隣接する要素は、文字", "
(コンマの後にスペースが続く)で区切られています。要素はString.valueOf(int)
のように文字列に変換されます。a
がnullの場合は"null"
を返します。
System.out.println(array.toString());
する必要があります:
System.out.println(Arrays.toString(array));
@Patrik Mと大いに同意しました、しかし、Arrays.toStringのものはそれが "["とを含むということです"]"と "、"が出力されます。だから私は単純にこのようにoutoutからそれらを削除するために正規表現を使用します
String strOfInts = Arrays.toString(intArray).replaceAll("\\[|\\]|,|\\s", "");
そして今、あなたはJava.lang.Number
に解析することができるStringを持っています、例えば
long veryLongNumber = Long.parseLong(intStr);
あるいは、正規表現が嫌いならJava 8ストリームを使うことができます。
String strOfInts = Arrays
.stream(intArray)
.mapToObj(String::valueOf)
.reduce((a, b) -> a.concat(",").concat(b))
.get();
あなたは Java.util.Arrays を使うことができます:
String res = Arrays.toString(array);
System.out.println(res);
出力:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
配列のtoStringメソッドは、取得しているメモリアドレスのみを出力します。配列をループして各項目を単独で印刷する必要があります。
for(int i : array) {
System.println(i);
}
この関数は、 "6097321041141011026"のような文字列形式でintの配列を返します。
private String IntArrayToString(byte[] array) {
String strRet="";
for(int i : array) {
strRet+=Integer.toString(i);
}
return strRet;
}
ここで説明しているユーティリティを使用すると、配列に使用する文字列表現をより細かく制御できます。
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 >"
これは、文字列のリストから単一の文字列へ、そして文字列のリストへ戻る例です。
コンパイル:
$ javac test.Java
$ Java test
ランニング:
初期リスト: "。abc" "def" "ghi" "jkl" "mno" 1つのストリングとして: [.____。 "" [abc、def、ghi、jkl、mno] "[.____。] 再構成リスト: "abc" "def" "ghi" "jkl" "mno" ____。]
ソースコード:
import Java.util.*;
public class test {
public static void main(String[] args) {
List<String> listOfStrings= new ArrayList<>();
listOfStrings.add("abc");
listOfStrings.add("def");
listOfStrings.add("ghi");
listOfStrings.add("jkl");
listOfStrings.add("mno");
show("\nInitial list:", listOfStrings);
String singleString = listOfStrings.toString();
show("As single string:", singleString);
List<String> reconstitutedList = Arrays.asList(
singleString.substring(0, singleString.length() - 1)
.substring(1).split("[\\s,]+"));
show("Reconstituted list:", reconstitutedList);
}
public static void show(String title, Object operand) {
System.out.println(title + "\n");
if (operand instanceof String) {
System.out.println(" \"" + operand + "\"");
} else {
for (String string : (List<String>)operand)
System.out.println(" \"" + string + "\"");
}
System.out.println("\n");
}
}