2

私はJavaが初めてです。テーブルの両側に 12 の九九を作成しようとしているので、右に 12、下に 12 です。各行に、2 つの値の倍数が表示されます。したがって、私の計画は、ステートメントに非常によく似た 12 を使用して、12 行のそれぞれを出力することです。ループ内で 1 つの値が増加します。問題は、最初の行で y 値がインクリメントされないことです。したがって、間隔を空けて1を出力するだけです。

私の課題の後半について何か提案があれば、それは役に立ちます. 12 桁を出力する最初の行を取得したら、11 のステートメントを作成できます。しかし、残りのステートメントを取得するためのより簡単な方法があるように感じます。

public class Sixthree
{
    public static void main (String[] args) 
  {
        int x = 1;
        int y = 1;

        System.out.print("   ");

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

まず、出力を次のようにしたいと思います。

 1  2 3 4 5 6 7 8 9 10 11 12

しかし、現在の出力は次のようになります。

 1 1 1 1 1 1 1 1 1 1 1 1 1

しかし、最終的には次のようにしたいと考えています: http://math.about.com/blgrid.htm ただし、青い線はありません。

4

5 に答える 5

5

int c= x*yループ初期化ステートメントはループに対して 1 回だけ実行されるため、すべて 1 になりforます。つまり、最初に実行され、x=1それy=1以降、ループ本体ではなくループ初期化ステートメントとして指定されているため、再評価されることはありません。for ループは次のように機能します。

ループ初期化ステートメントは、ループの開始時に 1 回だけ実行されます。各反復の後、ループ更新式が実行され、ループ条件が再評価されます。for(loop_initialisation;loop_condition;loop_update) { ... }

cしたがって、ループ内で次のように更新する必要があります。

for ( int c= x*y; y<= 12; y++)
{
    c = x*y;
    System.out.print(c + "  ");

}
于 2013-11-07T04:53:47.223 に答える
0

ネストされた 2 つの for ループを使用する必要があります。1 つは の値を反復処理しx、もう 1 つは の値を反復処理し、y各内側ループは の値を出力x * yし、各外側ループは書式設定のために改行文字を出力します。

// Pseudo-code //
for(each x) {
    for(each y) {
        print(product);
    }
    print(newline);
}
于 2013-11-07T04:47:52.930 に答える
0

間隔をあけて 1 を出力するのはなぜですか?

これは、for ループで c を 1 回だけ割り当てるだけだからです。for ( int c= x*y; y<= 12; y++)

値 y が増加している場合、値 c は変化していません。値は 1*1=1 (x=1、y=1) です。

その結果、間隔をあけて 1 を出力するだけであることがわかります。

ネストされた for ループを使用して実装できます。

パブリック クラス 16 {

public static void main(String[] args) {
    int x = 12;
    int y = 12;

    for (int i = 1; i <= x; i++) {
        for (int j = 1; j <= y; j++) {
            System.out.printf("%d ", i * j);
        }
        System.out.println();
    }
}

}

于 2013-11-07T04:58:50.803 に答える