创建一个返回不同字符数量的“for”循环

时间:2013-02-21 01:09:40

标签: java

我有一个名为SnowFallReport的类,当从中创建一个对象时,它会随机将一个数字从1-20分配给一个名为snowFall的字段。目的是生成随机雪量的虚拟雪报告。然后我尝试创建一个方法,可以根据snowFall字段中的数字显示一定数量的星号。给了我一个提示,我应该使用for循环这样做,我只是无法弄清楚如何正确地说出来。代码如下:

import java.util.Random;

public class SnowFallReport
{   

    // Random amount of snow
    private double snowAmount;

    // Default constructor creates random amount and assigns to snowAmount
    public SnowFallReport()
    {
        Random snowFall = new Random();
        snowAmount = (snowFall.nextDouble() * 20);
    }

    public double getSnow()
    {
        return snowAmount;
    }

    public String getStars()
    {
        for (int starCount = 0; starCount >= snowAmount; starCount++)
            return "*";
         /* This is what I thought it should be^ but it turns out I need a return
 statement outside of the for loop. I've tried a couple of different ways with no luck */

    }

    public static void main(String[] args)
    {
        SnowFallReport day1 = new SnowFallReport();
        String lol = day1.getStars();
        System.out.print(lol);
    }   
}

6 个答案:

答案 0 :(得分:1)

getStars方法中,初始化StringBuffer(例如sb),然后在for循环中添加' *'每个雪量的字符。然后,返回sb.toString()

此外,你的for循环中的循环条件是错误的。如果语句为真,则循环将继续,而不是假。

以下方法应该有效:

public String getStars()
{
    StringBuilder sb = new StringBuilder();
    for (int starCount = 0; starCount < snowAmount; starCount++)
        sb.append("*");
    return sb.toString();
}

答案 1 :(得分:0)

for (int starCount = 0; starCount >= snowAmount; starCount++)

表示startCount = 0.而startCount&gt; = snowAmount执行循环然后递增startCount。

for (int starCount = 0; starCount <= snowAmount; starCount++)

另外:在for循环之后直接返回将打破循环 - 你需要在缓冲区中添加一个*,然后在完成循环后返回缓冲区。

答案 2 :(得分:0)

这是一个简单的for循环,它将返回星数。

    StringBuilder sb = new StringBuilder();
    for (int starCount = 0; starCount <= snowAmount; starCount++)
        sb.Append("* ");
    return sb;

你也可以尝试返回一个星号,然后继续循环。

    for (int starCount = 0; starCount <= snowAmount; starCount++)
        yield return "*";

此外,你的更大的标志应该是一个小于标志:)

答案 3 :(得分:0)

StringBuilder sb = new StringBuilder();
for (int starCount = 0; starCount < snowAmount; starCount++) {
    sb.append('*');
}
return sb.toString();

答案 4 :(得分:0)

您也可以初始化字符串,如

char[] c = new char[snowFall];
Arrays.fill(c, '*');
System.out.println(new String(c));

答案 5 :(得分:0)

你可能想要使用QuickCheck库中的生成器,就预先存在的PrimitiveGenerators来说它真的很酷

很容易

Generator<String> generator = PrimitiveGenerators.strings(5,20);
for (int i=0;i<10;i++) {
  String randomString = generator.next();
  ...
}