2013-02-21 96 views
-1

我有一个叫SnowFallReport的类,当从中创建一个对象时,它会随机将一个1-20的数字分配给一个名为snowFall的字段。目的是生成随机雪量的虚拟雪情报告。然后我试图创建一个方法,可以根据snowFall字段中的数字显示一定数量的星号。给了我一个暗示,我应该使用for循环来做到这一点,但我无法弄清楚如何正确地说出它。码如下:创建一个“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); 
    } 
} 
+0

'return'语句将切断循环。程序流程将退出该功能。 – Oneb 2013-02-21 01:48:23

回答

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

说startCount = 0。虽然startCount> = snowAmount做循环然后递增startCount。

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

另外:回归后直for循环将打破循环 - 你需要一个*添加到一个缓冲区,然后返回缓冲区,你已经做了循环之后。

1

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

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

下面的方法应该工作:

public String getStars() 
{ 
    StringBuilder sb = new StringBuilder(); 
    for (int starCount = 0; starCount < snowAmount; starCount++) 
     sb.append("*"); 
    return sb.toString(); 
} 
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 "*"; 

而且你更大的标志应该是大于号:)

+1

这是Java,而不是C#。 (因此,'.append()'而不是'.Append()',并且在Java中没有'yield return'。) – Eric 2013-02-21 01:14:13

+1

也<而不是<=我相信。 – Aurand 2013-02-21 01:16:37

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

你也可以像初始化

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

字符串中,你可能需要使用发电机从快速检查库中的少,根据预先存在的条件,它确实很酷PrimitiveGenerators

这很容易

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