【问题标题】:Printing array error打印阵列错误
【发布时间】:2013-03-08 18:28:35
【问题描述】:

这可能是一个简单的修复,但我只是没有看到它。我想弄清楚,如何让我的printOut() 方法从主Project5PartA 正确打印?我需要获取、设置和返回方法吗?另外,Tester 类中是否需要我的 while 循环?

程序编译并一直运行到无穷大,所以我猜while循环是错误的。但它也只在每一行连续打印出[Ljava.lang.String;@7c1c8c58

扩展 main 的类是无关紧要的,是项目的一部分。如果发布有误,我们深表歉意,并感谢您的帮助。

整个程序的输出类似于:

吠,吠。

喵,喵。

哇哦。

狗说汪,汪。

猫说喵,喵。

测试类:

public class Tester {

String[] animalArray = {"Dog", "Cat", "tRex", "Cow", "Pig", "Snake",
    "Goat", "Owl", "Chicken", "Frog"};

String[] noiseArray = {"Woof, woof", "Meow, meow", "Roooaaar", "Mooo",
    "Oink, oink", "Hissss", "Baaa", "Hoot, hoot", "Bock, bock",
    "Ribbit, ribbit"};

String[] printArray = new String[10];

public String printOut() {
    while (true) {
        for (int i = 0; i < 10; i++) {

            String value = (animalArray[i] + " says " + noiseArray[i] + ".");
            printArray[i] = value;

            System.out.println();
            System.out.println(printArray);
            break;

        }
    }
}
}

【问题讨论】:

  • 哇,我觉得非常非常愚蠢。完全忘记了 Arrays.toString()。所有发帖的人都帮了忙,我只能选择一个。再次感谢大家!

标签: java arrays methods printing


【解决方案1】:

使用Arrays.toString() 打印数组的内容。不要实际打印数组本身。

System.out.println(printArray); // Prints [Ljava.lang.String;@7c1c8c58 
System.out.println(Arrays.toString(printArray0); // Prints [Dog says Woof, woof...]

如果您确实使用Arrays.toString(),请在循环外打印数组。 您也可以在循环内使用System.out.println(printArray[i]) 打印数组的每个部分。

public String printOut() {
    while (true) {
        for (int i = 0; i < 10; i++) {

            String value = (animalArray[i] + " says " + noiseArray[i] + ".");
            printArray[i] = value;
            System.out.println();
            System.out.println(printArray[i]); // This works
            break;
        }
    }
    System.out.println(Arrays.toString(printArray); // Also works
}

【讨论】:

    【解决方案2】:

    因为 printArray 是数组并且没有 toString() 方法,所以您必须单独打印出每个元素或使用 Arrays.toString(printArray) 方法。

    如果它在 while 循环中,这样的事情会让你得到一个不断增长的数组。将它放在while循环之外:

    System.out.println(Arrays.toString(printArray));
    

    或者在while循环中:

    System.out.println(printArray[i]);
    

    【讨论】:

      【解决方案3】:

      除非您真的希望程序永远运行,否则您不需要 while 循环。

      您应该如下更改您的打印语句。 (您打印的是数组对象,而不是数组内容。)

      System.out.println(printArray[i]);
      

      【讨论】:

        猜你喜欢
        • 2014-04-21
        • 2019-05-08
        • 2012-10-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-21
        • 2020-10-23
        • 2014-05-02
        相关资源
        最近更新 更多