将if代码转换为forloop语句

时间:2014-04-14 06:32:51

标签: for-loop tostring bluej

现在我必须编写一个代码,为每个collectDots打印出“*”,但是如果它没有收集任何collectDots == 0那么它会打印出“”。使用太多的if语句看起来很乱,我在这种情况下如何实现forloop。

3 个答案:

答案 0 :(得分:0)

作为一般原则,你在这里做的重排是好的。您已经找到了一种以一般方式表达规则的方法,而不是一系列特殊情况。这更容易推理和检查,并且对于有超过3个点的情况,它显然是可扩展的。

您可能在混淆目标数和迭代值时出错,我假设collectDots包含您拥有的点数(根据您的if语句),因此您需要引入一个变量来计算值

for (int i =0; i <= collectedDots; i++)
{
    stars = "*";
    System.out.print(stars);

}

答案 1 :(得分:0)

好的,所以你已经有了一个名为gatherDots的变量,这个变量可以告诉你要打印多少颗星?

所以你的循环就像是

for every collected dot
   print *

但是你不能将它打印出来,你需要返回一个将打印出来的字符串。所以它更像是

for every collected dot
   add a * to our string

return the string

它们和你到目前为止的尝试之间的关键区别在于你每次通过循环都指定一个星形作为你的字符串,然后在它结束时,你返回该字符串 - 无论你分配了多少次星号到字符串,字符串总是只有一颗星。

你还需要一个单独的变量来跟踪你的循环,这应该可以解决问题:

String stars = "";

for(int i = 0; i < collectedDots; i++)
{
   stars = stars + "*";
}

return stars;

答案 2 :(得分:0)

你几乎是对的。只需要改变循环的范围限制。循环初始值设置为1.因此,只要您收集了Dots = 0,它就不会进入循环并返回&#34;&#34;,因为星星用&#34;&#34;初始化。在循环之前。

String stars = "";
for (int i =1; i <= collectedDots; i++)
{
    stars = "*";
    System.out.print(stars);
}
return stars;