如何在此for循环中返回字符串?

时间:2015-02-20 03:36:22

标签: java

我有这个DieRolling课程,我们正在为AP计算机科学做准备。该方法应该以“整洁”的方式返回它们已经滚动的所有数字。这是代码:

public void printNum()
{
    for (int i=0;i<100;i++)
    {
        System.out.println("Roll " + (i+ 1) + ": " + numbers[i]);
    }
}

我需要返回整个for循环,但我无法弄清楚如何。 我该怎么办? 谢谢!

(这是我在这里发表的第一篇文章,如果有点混乱就很抱歉)

5 个答案:

答案 0 :(得分:1)

您应该将printNum声明为String,然后生成所有字符串的连接。

public String printNum(final int pToPrint)
{
    StringBuilder result = new StringBuilder();

    for(int i = 0; i < pToPrint; i++)
       result.append("Roll " + (i+ 1) + ": " + numbers[i] + System.lineSeparator());

   return result.toString();
}

然后你会打电话给例如System.out.println(printNum(100));

答案 1 :(得分:0)

您首先需要将返回类型从void更改为合理的值。我建议您使用int数组,因为您显然知道您将返回100个数字,或者ArrayList<Integer>如果该假设不正确,请在循环中填充数组或List,并返回它。 AGain,您需要将返回类型更改为您决定返回的类型。

由于这是作业,因此细节应留给您。

答案 2 :(得分:0)

你可以简单地返回数组......

public int[] printNum() {
    // ...
    return numbers;
}

如果要格式化结果,可以使用

public String printNum() {
    // ...
    Arrays.toString(numbers);
}

如果您想自定义格式,可以使用...

public String printNum() {
    StringBuilder sb = new StringBuilder(128);
    for (int i=0;i<numbers.length;i++)
    {
        System.out.println("Roll " + (i+ 1) + ": " + numbers[i]);
        if (sb.length() > 0) {
            sb.append(", ");
        }
        sb.append(numbers[i]);
    }        
    return sb.toString();
}

或者如果你正在使用Java 8

public String printNum() {
    StringJoiner joiner = new StringJoiner(", ");
    for (int i=0;i<numbers.length;i++)
    {
        System.out.println("Roll " + (i+ 1) + ": " + numbers[i]);
        joiner.add(Integer.toString(numbers[i]));
    }        
    return sb.toString();
}

答案 3 :(得分:0)

您只能从某个功能返回一次。 因此,如果要返回所有数字,则可以返回数组。

答案 4 :(得分:0)

只需创建一个String变量String result = "";,并在每个循环中为该字符串添加数字。 result += "Roll " + (i+ 1) + ": " + numbers[i] + "\n";

或者其他什么。但您肯定需要更改您的退货类型。对于上述解决方案,它应该是String而不是void。