我有这个DieRolling课程,我们正在为AP计算机科学做准备。该方法应该以“整洁”的方式返回它们已经滚动的所有数字。这是代码:
public void printNum()
{
for (int i=0;i<100;i++)
{
System.out.println("Roll " + (i+ 1) + ": " + numbers[i]);
}
}
我需要返回整个for循环,但我无法弄清楚如何。 我该怎么办? 谢谢!
(这是我在这里发表的第一篇文章,如果有点混乱就很抱歉)
答案 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。