0

ユーザーが行変数と高さ変数として入力した内容に応じて、... XXX XXX XXX (exp. 3x3) などのボックスを作成するコードを見つけようとしています。ネストされたループが正しく機能しません。助けてもらえますか?

コードはこちら...

Set ServerOutput on;
Declare

  RectangleHeight Number(2):=5;
  RectangleWidth Number(2):=;
  RowCount Number(1) :=0;
  ColumnCount Number(1) :=0;
 Begin 
Loop 
Exit When RowCount>=RectangleHeight;
    Loop
    Exit When ColumnCount>=RectangleWidth;
    dbms_output.put_line('X');  
    ColumnCount := ColumnCount+1;
    End Loop;
RowCount := RowCount+1;
End Loop;


End;
4

1 に答える 1

0

ロジックを少し調整する必要があるほど、ループに問題はありません。
最初に 5 行目に構文エラーがあります:RectangleWidth Number(2):=;
解決すべき問題がさらにいくつかあることを修正します。

1)ループの幅部分の\nそれぞれの後に改行を入れています。これはおそらく改行なしのXシングルのはずです。 2) オブジェクトの幅を出力した後、変数はどうなりますか? 3) 行全体を出力した後、どのようにして新しい行に到達しますか? X
ColumnCount

コメント付きのコード例:

SET ServerOutput ON;
DECLARE
  RectangleHeight NUMBER(2) :=5;
  RectangleWidth  NUMBER(2) :=9; -- FIXED SYNTAX ERROR
  RowCount        NUMBER(1) :=0;
  ColumnCount     NUMBER(1) :=0;
BEGIN
  LOOP
    EXIT WHEN RowCount>=RectangleHeight;
    LOOP
      EXIT WHEN ColumnCount>=RectangleWidth;
        dbms_output.put('X'); -- DON'T PUT A NEW LINE, JUST USE PUT
        ColumnCount := ColumnCount+1;
    END LOOP;
    ColumnCount := 0; -- AFTER A SUCCESSFUL ROW IS OUTPUT, WE RESET OUR COLUMN COUNTER
    RowCount := RowCount+1;
    dbms_output.put_line(null); -- JUST OUTPUTTING A BLANK LINE
  END LOOP;
END;
/

そして、それぞれ高さと幅の入力として 5とを使用した出力:9

XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX

これは宿題のように感じますが、私はいつもこの種の視覚的な問題が好きでした.

于 2015-03-06T18:02:58.530 に答える