如何在Java中使用toString方法将int数组转换为String [重复]
Posted
技术标签:
【中文标题】如何在Java中使用toString方法将int数组转换为String [重复]【英文标题】:How to convert an int array to String with toString method in Java [duplicate] 【发布时间】:2012-06-09 22:04:14 【问题描述】:我正在尝试使用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 的文档中:
字符串表示由数组元素的列表组成,括在方括号(“[]”)中。相邻元素由字符“,”(逗号后跟一个空格)分隔。
【问题讨论】:
【参考方案1】:你想要的是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)
转换为字符串。如果a
为空,则返回"null"
。
【讨论】:
从 "[x, y, z]" 返回数组或列表的最简单方法是什么? @nerdistcolony 没有什么比 Arrays.toString 更干净了 - 但请参阅 ***.com/questions/456367/… 以获得一些建议。 @Sbodd - 我想出了一个基于 ArrayList 的示例并发布了答案。它专门针对我需要为我正在移植的应用程序解决的问题,但可能会节省一些时间。【参考方案2】:System.out.println(array.toString());
应该是:
System.out.println(Arrays.toString(array));
【讨论】:
【参考方案3】:非常同意@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();
【讨论】:
正则表达式真的很讨厌......【参考方案4】:你可以使用java.util.Arrays:
String res = Arrays.toString(array);
System.out.println(res);
输出:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
【讨论】:
如何从此输出中检索 int[] 数组。【参考方案5】:数组上的 toString 方法只打印出你得到的内存地址。 您必须遍历数组并自行打印出每个项目
for(int i : array)
System.println(i);
【讨论】:
【参考方案6】:使用我描述的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 >"
【讨论】:
【参考方案7】:此函数以字符串形式返回一个 int 数组,如“6097321041141011026”
private String IntArrayToString(byte[] array)
String strRet="";
for(int i : array)
strRet+=Integer.toString(i);
return strRet;
【讨论】:
出于性能原因,最好使用 StringBuilder 而不是直接字符串连接【参考方案8】:这是一个从字符串列表到单个字符串,再返回到字符串列表的示例。
编译:
$ 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");
【讨论】:
没人要这个。 @Roberto 它使用了相关技术(数组方法),我提供它是为了补充与数组转换相关的人们的 int 相关答案,即使它显示字符串,因为我知道已经有 int 相关的解决方案。 . 没有理由对它投反对票和沾沾自喜。不妨先在这附近做点好事,然后再去诋毁其他人。 不,你错了。第一句话阐明了目的,并且足够相关。在考虑对其他用户进行废话之前,先贡献一些有用的东西。除了让别人的情况变得更糟之外,你什么也没做。以上是关于如何在Java中使用toString方法将int数组转换为String [重复]的主要内容,如果未能解决你的问题,请参考以下文章
在java中String的方法:toString()怎么用?