如何在Java中使用toString方法将int数组转换为字符串
我正在尝试使用如何在Java中使用toString方法将int数组转换为字符串,java,arrays,tostring,Java,Arrays,Tostring,我正在尝试使用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**
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的文档:
字符串表示法由数组元素列表组成,用方括号(“[]”)括起来。相邻元素由字符“,”分隔(逗号后跟空格)
应该是:
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类型,都有一个静态的array.toString
helper方法;一个用于:
返回指定数组内容的字符串表示形式。字符串表示法由数组元素列表组成,用方括号括起来(“[]”
)。相邻元素由字符“,”
(逗号后跟空格)分隔。元素通过String.valueOf(int)
转换为字符串。如果a
为null,则返回“null”
数组上的toString方法只打印出您得到的内存地址。 您必须在数组中循环并单独打印每个项目
for(int i : array) {
System.println(i);
}
您可以使用:
输出:
[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 >"
String[]s={“你好”,“世界”};
RichIterable r=RichIterable.from(s);
r、 mkString();//给出“你好,世界”
r、 mkString(“|”);//给出“你好|世界”
r、 mkString(“<”、“,”、“>”)//给出“”
此函数以字符串形式返回int数组,如“6097321041141011026”
下面是一个从字符串列表到单个字符串,再回到字符串列表的示例 汇编:
$ 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"
初步名单:
“abc”
“def”
“ghi”
“jkl”
“mno”
作为单个字符串:
“[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");
}
}
import java.util.*;
公开课考试{
公共静态void main(字符串[]args){
List listofstring=new ArrayList();
添加(“abc”);
添加(“定义”);
添加(“ghi”);
添加(“jkl”);
添加(“mno”);
显示(“\n初始列表:”,listOfStrings);
String singleString=listOfStrings.toString();
显示(“作为单个字符串:”,singleString);
列表重建列表=Arrays.asList(
singleString.substring(0,singleString.length()-1)
.子字符串(1).拆分(“[\\s,]+”);
显示(“重组列表:”,重组列表);
}
公共静态void显示(字符串标题、对象操作数){
System.out.println(title+“\n”);
if(字符串的操作数实例){
System.out.println(“\”+操作数+“\”);
}否则{
for(字符串:(列表)操作数)
System.out.println(“\”+字符串+“\”);
}
System.out.println(“\n”);
}
}
非常同意@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();
从“[x,y,z]”返回数组或列表的最简单方法是什么?@nerdistcolony没有什么比数组更干净的了。尝试另一种方法-但请参阅以获得一些建议。@Sbodd-我根据数组列表提出了一个示例并发布了答案。这是针对我正在移植的应用程序需要解决的一个问题,但可能会节省一些时间。最好使用StringBuilder,而不是直接串接-出于性能原因,Nobody要求这样做。@Roberto它使用相关技术(数组方法),我提供它是为了补充使用数组转换的人的int相关答案,即使它显示字符串,因为我知道已经有int相关的解决方案。。没有理由对它投反对票并沾沾自喜。也许在这里做点好事,然后再去垃圾别人。不,你错了。第一句话阐明了目的,并且有足够的相关性。在考虑攻击其他用户之前,先贡献一些有用的东西。你只会让其他人的情况变得更糟。如何从这个输出中检索int[]数组。正则表达式真的很糟糕。。。
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");
}
}
String strOfInts = Arrays.toString(intArray).replaceAll("\\[|\\]|,|\\s", "");
long veryLongNumber = Long.parseLong(intStr);
String strOfInts = Arrays
.stream(intArray)
.mapToObj(String::valueOf)
.reduce((a, b) -> a.concat(",").concat(b))
.get();