如何在 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 的文档:

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

595017 次浏览
System.out.println(array.toString());

应该是:

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

你需要的是 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[],有一个静态的 Arrays.toString助手方法:

public static String toString(int[] a)

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

数组上的 toString 方法只打印出内存地址,您正在获得这个地址。 您必须遍历数组并单独打印出每个条目

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

你可以使用 Java.util. 数组:

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

产出:

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

使用我描述的实用程序 给你,您可以对数组的字符串表示形式进行更多的控制。

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

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

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

下面是一个从字符串列表到单个字符串再到字符串列表的示例。

编译:

$ javac test.java
$ java test

跑步:

Initial list:


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


As single string:


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


Reconstituted list:


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

非常赞同@Patrik M,但是 Arrays.toString 的问题在于它在输出中包含 "[""]"以及 ","。因此,我将简单地使用正则表达式像这样从 out 中删除它们

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

现在你有一个字符串,它可以被解析回 java.lang.Number,例如,

long veryLongNumber = Long.parseLong(intStr);

或者你可以使用 java 8流,如果你讨厌 regex,

String strOfInts = Arrays
.stream(intArray)
.mapToObj(String::valueOf)
.reduce((a, b) -> a.concat(",").concat(b))
.get();