Java 使用for循环遍历数组x。以字符串形式返回x的元素,其中每个元素由单个空格分隔

Java 使用for循环遍历数组x。以字符串形式返回x的元素,其中每个元素由单个空格分隔,java,arrays,string,int,tostring,Java,Arrays,String,Int,Tostring,我一直在 [I@62aba879 这里的问题是在数组对象上调用toString,而不是在数组中的元素上 改为使用Arrays.toString[]a 为了生成由空格分隔的数组的字符串表示形式,如果单独处理第一个数组项,然后添加以空格为前缀的所有其他元素,则会有所帮助 public static String toStringFor(){ int[] x={3, 45, 17, 2, -1, 44, 9, 23, 67, 2, -6, -23, -100, 12, 5, 1212};

我一直在

[I@62aba879


这里的问题是在数组对象上调用toString,而不是在数组中的元素上

改为使用Arrays.toString[]a

为了生成由空格分隔的数组的字符串表示形式,如果单独处理第一个数组项,然后添加以空格为前缀的所有其他元素,则会有所帮助

public static String toStringFor(){

    int[] x={3, 45, 17, 2, -1, 44, 9, 23, 67, 2, -6, -23, -100, 12, 5, 1212};

    String array = x.toString();

    return array;
}
这样做不会在字符串末尾留下任何尾随空格。

您应该使用for和StringJoinercredits to@sm4来帮助实现此目的

    int[] x = {1, 2, 3, 4};

    int i = 0;
    String arr = String.valueOf(x[i++]);
    for (; i < x.length; i++)
        arr += " " + x[i];
toString返回一个字符串,该字符串包含一些缩写字符,后跟哈希的十六进制表示形式,除非被重写。数组不会重写此字符串,因此您得到了数组所在对象的toString


您需要编写自定义代码来实现目标。也许您可以在数组中循环,将每个数组元素的字符串表示形式与一些用于格式化的字符一起附加到StringBuilder,然后从执行该任务的方法中输出生成的StringBuilder的toString。

您看到的是数组实例的hashcode。您不能简单地在数组上使用toString并期望得到一个好的结果。事实上,每个对象都有自己的toString方法,可以通过各种方式实现。数组上toString的实现是这样的:

public static String toStringFor(){

    int[] x={3, 45, 17, 2, -1, 44, 9, 23, 67, 2, -6, -23, -100, 12, 5, 1212};


    StringJoiner sj=new StringJoiner(" ");

    for (int i = 0; i < x.length; i++) {
        sj.add(String.valueOf(x[i]));
    }

    return sj.toString();
}
您必须迭代元素并自己创建最终字符串。在Java 8中有一种方法可以做到这一点:

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
这将从数组中创建一个值流,并将它们收集到一个用空格分隔的字符串中

另一个带有for循环的版本:

int[] x={3, 45, 17, 2, -1, 44, 9, 23, 67, 2, -6, -23, -100, 12, 5, 1212};

String result = Arrays.stream(x)
        .mapToObj(String::valueOf)
        .collect(Collectors.joining(" "));
System.out.println("result = " + result);
您还可以使用以下命令迭代数组:

StringJoiner sj = new StringJoiner(" ");
for (int i : x) {
    sj.add(String.valueOf(i));
}
System.out.println("result =" + sj.toString());

.

@Alberto pérez提供了更实用的答案。这个答案更具教育意义。但他需要一个用空格分隔的字符串。我们应该迭代所有元素来构造字符串。在这种情况下,他会使用for来遍历数组中的每个元素,并将其集中到一个新字符串或StringBuilder上,我说这样你就可以更新你的答案,你就真的说出了我说的话。虽然你可以使用StringBuilder,但我不建议你使用它。首先,你使用它有点错误,因为你也使用了字符串连接。编译器可能会处理得很好,但你在执行sb.appenda+b时会创建一些额外的字符串实例。其次,你会看看我的答案,看看我的答案,或者直接使用ScReChanor或者通过一个流的收集器。@ SM4你是对的,我会编辑我的答案。我不知道StringJoiner,自从我在StAccess HOHA上,每一天都变得更好,谢谢。总是学习我猜^ ^ @ SkrWeeVyIOY,然后我的一天刚刚得到E。甚至更好;可能的复制品
for (int i = 0; i < x.length; i++) {
...
}