2

用户输入

5

所需输出(使用 while 循环)

1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
5 10 15 20 25

代码:

while (temp1 <= a) {
    while (temp2 <= a) {
        temp = temp2 * temp1;
        System.out.print(temp + " ");
        temp2++;
    }
    temp1++;
    System.out.println();
}

我正在a输入并尝试形成该数字,但我不能..请帮助

4

6 回答 6

3

temp2after 内循环的值while将是a+1. 由于您没有将其重置为1以后,您将不会再次进入此内部循环,因为条件while(temp2<=a)将不会满足。更正它设置temp21内外循环,在内循环之前或之后。

于 2013-10-31T19:50:13.973 回答
2

如果我必须把问题分解成简单的话,

  • 用户将输入一个数字:“x”。
  • 创建大小为 arr[x][x] 的二维矩阵
  • 每个元素的值将是 a[i][j] = i * j; // 考虑 (i=1; i<=x) & (j=1;j<=x)
  • 打印出矩阵。

有 n 种方法可以做到。

我想使用 for 循环将是最简单的。

于 2013-10-31T19:57:47.270 回答
1
    int a = 5;
    int temp1 = 1;
    int temp2= 1;
    int temp = 1;

    while(temp1 <= a){
        while(temp2 <= a){
            temp = temp2*temp1;
            System.out.print(temp + " ");
            temp2++;
        }
        System.out.println();
        temp1++;
        temp2=1;
    }

上面的代码应该有你想要的结果。在循环结束时重置 temp2 变量。只需更改int a = 5为您想要的任何内容。

附加答案:

    int userInput = 5;
    int answer = 0;
    for(int y = 0; y < userInput; y++){

        for(int x = 0; x < userInput; x++ ){

            answer = x * y;
            System.out.print(answer + " ");
        }
        System.out.println();
    }

有了这个答案,您无需重置 temp 变量并将产生所需的结果

于 2013-10-31T19:56:16.437 回答
1
    int a = 5; //Or however else you get this value.

    //Initialize your values
    int temp1 = 1;
    int temp2 = 1;
    int temp; //Only need a declaration here.

    while (temp1 <= a) {            
        while(temp2 <= a) {
            temp = temp1*temp2;
            System.out.print(temp + " ");
            temp1++;
            temp2++;
        }
        //This executes between inner loops
        temp2 = 1; //It's important to reset 
        System.out.println();
    }

或者另一种紧凑的方式:

    int a = 5;

    int row = 0;
    int col = 0;

    while (++row <= a) {            
        while(++col <= a) {
            System.out.print(row*col + " ");
        }
        col = 0;
        System.out.println();
    }
于 2013-10-31T20:01:52.640 回答
1
    for(int i=1; i<=a; i++){
        System.out.print(i);
        for(int j=2; j<=a; j++){
            int val = i*j;
            System.out.print(" " + val);
        }
        System.out.println();
    }
于 2013-10-31T20:03:12.070 回答
1

下面的代码注释解释了您的代码有什么问题。

//assume temp1 equals 1
while(temp1 <= a){
    temp2 = 1;//you're primarily forgetting to reset the temp2 count
    while(temp2 <= a){
        temp = temp1*temp2;
        System.out.print(temp + " ");
        temp2++;
    }
    temp1++;
    System.out.println();
}
于 2013-10-31T19:52:39.130 回答