2012-04-27 2 views
0

whileループに問題があります。 2つの入力変数を持つダイヤモンドを印刷するタスクがあります。 1)行数/中間の最大文字数を表す整数2)印刷する文字: 擬似コード: 7 = int $ = char プログラムで印刷する必要があります(左側のスペースを考慮してください)。 http://pastebin.com/cspgz3bAダイヤモンドを描画しているwhileループ

私のwhileループは混乱しているようです。今、彼らは(*スペースをシミュレート)印刷されています http://pastebin.com/cspgz3bA

私は2つの三角形(上&下)にダイヤモンドを分離することは、これを取り組むの最も簡単な方法であることをことを発見した、しかし、私のコードは、完全なゴミのようです...

EDIT ::これは三角形の上半分のため、(行/ 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 –

+0

申し訳ありませんが、私はそれをしていたはずです - jpmは私がそれなしで探していた答えを得ました:) – Numpty

答えて

3

charPrintedおよびspacesは、外側ループの先頭に0にリセットする必要があります。

+0

Huzah!それはすぐそこにありました。私はそれらをリセットすることを完全に忘れてしまった。あなたは紳士と学者です:) – Numpty

+0

私は今、これを取得しています:* XXXXXXXXX *** X ** xxxの ** XXXXX * XXXXXXX それは完璧ではないのですが、私はチューン私の数学ほんの少しをすることができます。ありがとうございました – Numpty

+0

「マックススペース」は 'integerInput/2'として計算されるべきです。これは整数除算であるため、マイナス1の必要はありません。あなたのために切り捨てられます。それから、 'spaceReq'を計算するのではなく、' maxSpace'を使用してください。最初の内部ループは 'while(spaces jpm

関連する問題