web-dev-qa-db-ja.com

JavaでtoStringメソッドを使ってint配列をStringに変換する方法

私は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のドキュメントのように、出力を探しています。

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

132
Jaanus

欲しいのは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"を返します。

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

する必要があります:

System.out.println(Arrays.toString(array));
35
Eng.Fouad

@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();
20
Hasasn

あなたは Java.util.Arrays を使うことができます:

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

出力:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
19
Jesfre

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

for(int i : array) {
 System.println(i);
}
13
Frank Sposaro

この関数は、 "6097321041141011026"のような文字列形式でintの配列を返します。

private String IntArrayToString(byte[] array) {
        String strRet="";
        for(int i : array) {
            strRet+=Integer.toString(i);
        }
        return strRet;
    }
3
Roberto Santos

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

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 >"
3
missingfaktor

これは、文字列のリストから単一の文字列へ、そして文字列のリストへ戻る例です。

コンパイル:

$ 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");
    }
}
0
clearlight