2013-02-21 85 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(); 
    ... 
}