4
public class MultiplicationTable {
public static void main (String[]a){

    int[] x;
    x = new int[10];
    int i;
    int n=0;

    for (i=0;i<x.length;i++){
        n++;
        x[i]=n;
        System.out.print(x[i] + " ");
    }

    System.out.println();
    for (i=0;i<x.length;i++)            
        System.out.print(x[0] * x[i] + " ");

    System.out.println();
    for (i=0;i<x.length;i++)            
        System.out.print(x[1] * x[i] + " ");

    System.out.println();
    for (i=0;i<x.length;i++)            
        System.out.print(x[2] * x[i] + " ");

    System.out.println();
    for (i=0;i<x.length;i++)            
        System.out.print(x[3] * x[i] + " ");

    System.out.println();
    for (i=0;i<x.length;i++)            
        System.out.print(x[4] * x[i] + " ");

    System.out.println();
    for (i=0;i<x.length;i++)            
        System.out.print(x[5] * x[i] + " ");

    System.out.println();
    for (i=0;i<x.length;i++)            
        System.out.print(x[6] * x[i] + " ");

    System.out.println();
    for (i=0;i<x.length;i++)            
        System.out.print(x[7] * x[i] + " ");

    System.out.println();
    for (i=0;i<x.length;i++)            
        System.out.print(x[8] * x[i] + " ");

    System.out.println();
    for (i=0;i<x.length;i++)            
        System.out.print(x[9] * x[i] + " ");


}
}

これは、次のような乗算表を表示するプログラムです。

1 2 3 4 5 6 7 8 9 10

1 2 3 4 5 6 7 8 9 10

2 4 6 8 10 12 14 16 18 20

3 6 9 12 15 18 21 24 27 30

4 8 12 16 20 24 28 32 36 40

5 10 15 20 25 30 35 40 45 50

6 12 18 24 30 36 42 48 54 60

7 14 21 28 35 42 49 56 63 70

8 16 24 32 40 48 56 64 72 80

9 18 27 36 45 54 63 72 81 90

10 20 30 40 50 60 70 80 90 100

================================================== =============

それは実行されており、正しいですが、次のようにしたいです:

01 02 03 04 05 06 07 08 09 10

01 02 03 04 05 06 07 08 09 10

02 04 06 08 10 12 14 16 18 20

03 06 09 12 15 18 21 24 27 30

04 08 12 16 20 24 28 32 36 40

05 10 15 20 25 30 35 40 45 50

06 12 18 24 30 36 42 48 54 60

07 14 21 28 35 42 49 56 63 70

08 16 24 32 40 48 56 64 72 80

09 18 27 36 45 54 63 72 81 90

10 20 30 40 50 60 70 80 90 100

===============================================

何か方法はありますか?

4

2 に答える 2

22

はい、できます!を使用String.formatして、出力にゼロ パディングを追加できます。

例:

String.format("%05d", 2)を生成し00002ます。

現在のコードのいくつかの改善:

なぜ配列内に数値を格納するつもりなのかはわかりませんが (おそらく練習目的で)、とにかく 1 から 10 になるため、それは必要ありません。iあなたがそれをしたいのであれば、あなたは両方を必要としませんn.

for (i=0; i<x.length; i++){
    x[i] = i+1;
    System.out.print(x[i] + " ");
}

第 2 に、多くの重複コードがあり、それが非常に連続的であることに気付いていると思います。10 個の単一ループを使用する代わりに、ネストされた 2 つの for ループを使用してそれを行うことができます。

for (int row = 1; row <= 10; row++) {
    for (int col = 1; col <= 10; col++)
        System.out.print(String.format("%03d", row * col));
    System.out.println();
}
于 2012-07-01T04:56:05.113 に答える
1

はい:

String.format("%01d", x[i]*x[j]); is what you want.

あなたがprintfC に精通しているなら、これはよく知られているでしょう。そうでない場合は、 String.format フォーマット文字列に関する Java リファレンスをお読みください。

また、10 個のステートメントではなく、System.out.println2 つのカウンターで二重にネストされたループを使用できます。1 つは現在の行をカウントするためのものでj、1 つは各列に 1 つですi

于 2012-07-01T04:59:43.273 に答える