2014-01-11 84 views
2

我仍在處理我的Java鑽石問題。For循環未輸入

這是鑽石的當前狀態

http://prntscr.com/2i9l9y

我想這個問題是for循環就在這裏, 所有我需要的是要打印的空間,然後我完了。

任何人都可以看到任何明顯的原因爲什麼for循環我標記的問題沒有被輸入或運行?

//Bottom half of the diamond 

    int middleSpaces = sides + 2; 
    int downPreSpaces = 1; 
    int dRows = sides + 1; 

    for (int x = 1; x <= dRows; x++) { 
     if (x >= dRows) { 
      for (int z = 1; z <= sides + 1; z++) { 
       System.out.print(" "); 
      } 
      System.out.print("v"); 
     } 

     if (x != dRows) { 

      for(int y = 1; y <= x; y++) { 
       System.out.print(" "); 
      } 

      System.out.print("\\"); 

     //PROBLEM IS HERE 

      for (int e = middleSpaces - 2; e <= 0; e += 2) { 
       System.out.print(" "); 
      } 

      System.out.print("/\n"); 
     } 
+0

後的初始值,middlespace.etc –

+0

@boxed__l你去那裏,也是我剛剛與停車點搞亂對於循環,所以我知道這是不正確的現在,但如果你可以指向我的權利變量插入那將是真棒 – 23k

回答

1

你沒有遞減middleSpaces也有人沒有正確初始化:對於dRows

 int middleSpaces = sides * 2; //NOTICE 
     int downPreSpaces = 1; 
     int dRows = sides + 1;  
     for (int x = 1; x <= dRows; x++) { 
      if (x >= dRows) { 
       for (int z = 1; z <= sides + 1; z++) { 
        System.out.print(" "); 
       } 
       System.out.print("v"); 
      }  
      if (x != dRows) {  
       for(int y = 1; y <= x; y++) { 
        System.out.print(" "); 
       }  
       System.out.print("\\");  
       for (int e = middleSpaces - 2; e >= 0; e -= 1) { 
        System.out.print(" "); 
       } 
       middleSpaces-=2; //NOTICE 
       System.out.print("/\n"); 
      } 
+0

非常感謝你!我非常感謝幫助,現在看起來很簡單,我知道問題是什麼:)感謝您的時間! – 23k

0

middleSpaces - 2可能小於dRows,否則其中一個外部循環不起作用。

+0

我發佈所有的底部代碼,我仍然看不到問題是什麼...... – 23k

3

使用調試程序遍歷代碼,並檢查導致問題的位置的變量e和dRows的狀態。

+0

好吧不好問這樣,你會怎麼做,來計算這個特定問題所需的空間? – 23k

0

請注意,dRows,middleSpaces和dmSpaces的值在您顯示的代碼中不會更改。這意味着所討論的內部循環將始終打印相同數量的空格。

你大概的意思是類似以下內容:

for(int e = middleSpaces - 2; e >= x; e -= 2) { 
    System.out.print(" "); 
} 

可能由一個或某事被關閉,但更接近你想要得到的結果。

+0

這確實允許輸入一些空格,但它們仍然關閉。對於5尺寸的形狀,Id需要打印9個空格,然後每次減少2個。我認爲循環會這樣做,但我想我沒有正確寫入它。 – 23k