如何使用Java中的toString方法将int数组转换为String

时间:2012-06-05 21:02:47

标签: java arrays tostring

我正在尝试使用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的文档中那样:

  

字符串表示由数组元素的列表组成,用方括号括起来(“[]”)。相邻元素由字符“,”(逗号后跟空格)分隔。

8 个答案:

答案 0 :(得分:269)

你想要的是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[] says this的那个:

public static String toString(int[] a)
     

返回指定数组内容的字符串表示形式。字符串表示由数组元素的列表组成,用方括号括起来("[]")。相邻元素由字符", "(逗号后跟空格)分隔。由String.valueOf(int)将元素转换为字符串。如果"null"为空,则返回a

答案 1 :(得分:35)

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

应该是:

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

答案 2 :(得分:20)

非常同意@Patrik M,但Arrays.toString的内容是它包含" [" "]&#34 ; 和输出中的"," 。因此,我只是使用正则表达式将它们从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();

答案 3 :(得分:19)

您可以使用java.util.Arrays

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

输出:

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

答案 4 :(得分:13)

数组上的toString方法只打印出你得到的内存地址。 你必须遍历数组并自行打印出每个项目

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

答案 5 :(得分:3)

使用我描述的here实用程序,您可以更好地控制阵列的字符串表示形式。

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

答案 6 :(得分:3)

此函数以字符串形式返回一个int数组,如“6097321041141011026”

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

答案 7 :(得分:0)

这是一个从字符串列表到单个字符串,再返回字符串列表的示例。

编译:

class SillyArray extends ArrayObject {
    public function __construct($a)
    {
        foreach($a as $key => $value) {
            if (is_array($value)) {
                $a[$key] = new SillyArray($value);
            }
        }

        parent::__construct($a);
    }

    public function __toString() {
        $result = parent::offsetGet(0);

        if (isset($result)) {
            return (string)$result;
        }

        return "";
    }
}

$a = new SillyArray(
    array(0 => array(
        0 => 3,
        'name' => 'there'
    ))
);

echo $a[0];
echo $a[0][0];
echo $a[0]['name'];

运行:

    Initial list:

        "abc"
        "def"
        "ghi"
        "jkl"
        "mno"

    As single string:

        "[abc, def, ghi, jkl, mno]"

    Reconstituted list:

        "abc"
        "def"
        "ghi"
        "jkl"
        "mno"

源代码:

$ javac test.java
$ java test