【问题标题】:Why is my output being displayed as "[I@15db9742"? [duplicate]为什么我的输出显示为“[I@15db9742”? [复制]
【发布时间】:2021-04-29 10:39:04
【问题描述】:

尝试学习 Java。我正在研究数组。这是一个简单的程序,它的输出没有按我想要的那样显示。

package arrays2;

public class Arrays2 {

    public static void main(String[] args) {
        int[] userAge;
        userAge = new int[] {22,24,26,27,28};
        System.out.println("The ages of my friends are " + userAge + ".");
        
    }
    
}

输出显示:

运行: 我朋友的年龄是[I@15db9742。 构建成功(总时间:0 秒)

输出不应该显示为:

我朋友的年龄是22、24、26、27、28。

【问题讨论】:

  • Arrays.toString(userAge)
  • 顺便说一句,这些字符是计算机上的内存地址,这是userAge.toString() 输出的。请注意,这与 Arrays.toString(userAge) 不同
  • 如果你正在学习java,最好不要。在 Python 中,这将是一个单行,而不是所有这些讨厌的函数。

标签: java arrays


【解决方案1】:

您可以使用Arrays.toString 打印一个数组:

private static String arrayToString(int[] arr) {
    return Arrays.toString(arr).replaceAll("\\[|\\]", "");
}

或使用StringBuilderfor-loop 连接元素:

private static String arrayToString(int[] arr) {
    StringBuilder sb = new StringBuilder();
    for(int i = 0; i < arr.length; i++) {
        String current = String.valueOf(arr[i]);
        if(i < arr.length-1) current += ", ";
        sb.append(current);
    }
    return sb.toString();
}

演示:

int[] userAge;
userAge = new int[] {22,24,26,27,28};
System.out.println("The ages of my friends are " + arrayToString(userAge) + ".");

输出:

The ages of my friends are 22, 24, 26, 27, 28.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 2015-05-06
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多