2012-04-27 61 views
0

我在while循環中遇到了一些問題。我有一個任務打印一個菱形2個輸入變量: 1)整數表示行數/最大中間字符數 2)要打印的字符: 僞代碼: 7 = int $ = char 程序應打印(並在左側佔空間): http://pastebin.com/cspgz3bAWhile循環繪製鑽石

我的while循環似乎是一團糟。現在他們正在打印(*模擬空格): http://pastebin.com/cspgz3bA

我發現,鑽石分離成兩個三角形(上&下)要解決這個最簡單的方法,但是我的代碼似乎是完整的垃圾...

編輯::這是爲只有三角形的上半部分,因此(行/ 2)+1 - 它意味着完成中間行後停止。

rows = integerInput; 
    maxSpace = integerInput; 

    while (currentRow <=((rows/2)+1)) { 
     spaceReq = ((maxSpace -1)/2); // determines spaces required 
      while (spaces < spaceReq) { 

       System.out.print("*"); 
       spaces++; 
      } 
      while (charPrinted < charReq){ 
       System.out.print(charInput); 
       charPrinted++; 

      }    
      currentRow++; 
      maxSpace--; 
      charReq = charReq +2; 
      System.out.println(""); 
     } 

有人可以指出爲什麼這適用於第1次迭代,但打破了下一個呢?

謝謝!

+1

你願意發佈一個更完整的代碼嗎?輸入/輸出?理想情況下,張貼一個SSCCE http://sscce.org – 2012-04-27 23:02:02

+0

對不起,我應該做到這一點 - jpm給了我沒有它,但我尋找的答案:) – Numpty 2012-04-27 23:13:25

回答

3

charPrintedspaces需要重置爲外循環頂部的0

+0

Huzah!那是正確的。我完全忘了重置它們。你是一個紳士和學者:) – Numpty 2012-04-27 23:09:30

+0

現在我得到這樣的:*** X ** XXX ** XXXXX * XXXXXXX * XXXXXXXXX 它並不完美,但我可以調整我的數學一丁點。再次感謝 – Numpty 2012-04-27 23:10:29

+0

是的,訣竅是'maxSpace'應該作爲'integerInput/2'預先計算出來。不需要減1,因爲這是整數除法,並且會爲你截斷。然後,只需使用'maxSpace'而不是試圖計算'spaceReq'。所以第一個內部循環是'while(spaces jpm 2012-04-28 02:06:59