如何在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()怎么用?

Java中数组元素以toString()方法输出的问题,谁能帮帮我啊!

如何 StringFormat 格式控制整数和小数各两位数

Java - toString 格式化(格式化双精度)

JAVA中int转String类型有三种方法

如何在 Java 中使用 toString 方法?