2016-06-21 223 views
-2

目前正在處理一些額外的問題集,似乎被這個問題困住了。我需要做下面的輸出:需要在java中循環的幫助

* *  
    * *  
* * * * * 
    * *  
* *  

我已經得到了十字架上下來,但我有,中間行的問題,希望有人能幫助我找到答案。繼承人到目前爲止我的代碼(輸入設定爲5):

public static void drawPlusVersion3(int input){ 
     if (input % 2 != 0) { 
for(int c = 0; c < input; c++) { 
     for(int r = 0; r < input; r++) { 
      if((c == input/2) || (r == input/2)) 
       System.out.print("*"); 
      if (c == r){ 
       System.out.print("*"); 
       } 
      else 
       System.out.print(" "); 
       System.out.print(" "); 
     } 
     System.out.println(); 
    } 
} 
    } 

電流輸出:

* *  
    * *  
* * ** * * 
    * * 
    * * 

在此先感謝!

+0

你知道爲什麼* *你的程序打印它所打印的? – immibis

+0

您是否已經完成了IDE調試器中的代碼?這是開始的地方,你應該在發佈之前這樣做,以便更好地瞭解哪些行爲出乎意料。如果您一次只使用一個調試器,您很可能會發現錯誤。有了這種類型的問題,如果您在問這裏之前應用了良好的調試技巧,那麼您將爲自己和我們其他人節省大量時間。 –

+0

@immibis我知道代碼的作用,但我不知道爲什麼這些2星粘在一起,並破壞了模式 – Ronald

回答

1

如何:

for (int i = 0; i < input; i++) { 
    for (int j = 0; j < input; j++) { 
     if (j == input/2 || i == input/2 || i + j == input - 1) { 
      System.out.print("* "); 
     } else { 
      System.out.print(" "); 
     } 
    } 
    System.out.println(); 
} 
+0

這個工作原理但是我不認爲你需要'System'中'*'之後的空格。 out.print(「*」);' – Ronald

+0

@RonLevitzky這取決於你。你的示例輸出有空格,所以我包含它。 – shmosel

2

你可以試試:

public static void drawPlusVersion3(int input){ 
     if (input % 2 != 0) { 
for(int c = 0; c < input; c++) { 
     for(int r = input - 1; r >= 0; r--) { 
      if((c == input/2) || (r == input/2) || c == r) 
       System.out.print("*"); 
      else 
       System.out.print(" "); 
       System.out.print(" "); 
     } 
     System.out.println(); 
    } 
} 
    } 
+0

這給出了相同的輸出只是在相反的方向和2星由於某種原因仍然互相接觸 – Ronald

+1

我固定的代碼,你可以再次檢查@RonLevitzky – ThiepLV

+0

這是這麼簡單的呃。你介意解釋爲什麼將'c == r'移到'if'語句中改變了結果?仍然有點困惑。 – Ronald