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));

每种不同的原始 Java 类型都有一个静态Arrays.toString辅助方法;一个是int[]这样说的:

public static String toString(int[] a)

返回指定数组内容的字符串表示形式。字符串表示由数组元素的列表组成,括在方括号 ( "[]") 中。相邻元素由字符分隔", "(逗号后跟空格)。元素被转换为字符串 by String.valueOf(int)"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 回答
3

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

private String IntArrayToString(byte[] array) {
        String strRet="";
        for(int i : array) {
            strRet+=Integer.toString(i);
        }
        return strRet;
    }
于 2015-03-01T04:07:24.250 回答
0

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

编译:

$ javac test.java
$ java test

跑步:

    初始名单:

        “ABC”
        “定义”
        “吉”
        “jkl”
        “mno”

    作为单个字符串:

        “[abc, def, ghi, jkl, mno]”

    重组清单:

        “ABC”
        “定义”
        “吉”
        “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");
    }
}
于 2015-09-24T01:40:05.430 回答