我正在制作一个Java程序,该程序显示如下所示的乘法表:

1

但是我只能从第1列到第5列获得结果。我如何使其余的显示在下面?

该程序只能包含一个for()嵌套循环。

到目前为止,这是我的代码:

import java.util.Scanner;
public class Table{
    public static void main(String[] args){

        Scanner s = new Scanner(System.in);
        System.out.print("Enter a number: ");

        int inputi = s.nextInt();

        for(int i = 1 ;i<=10;i++) {

            for(int j=1;j<=inputi && j <= 5;j++) {
                System.out.print(j + " x " + i + " = "  +(i*j) + "\t");
            }

            System.out.println();

            if(i >= 5)
            for(int j = 6; j <= inputi && j <= 10; j++){
                System.out.print(j + " x " + i + " = "  +(i*j) + "\t");
            }
        }

        System.out.println();
        System.out.println();
    }
}


有人可以帮忙吗?

谢谢。

编辑:添加了示例输入。

输入i = 7

预期产量:

java - Java乘法表-LMLPHP

实际输出:

java - Java乘法表-LMLPHP

最佳答案

我建议


创建具有所需列数的单独变量
计算要打印多少行(请参见iterations
一张一张打印


请查看下面的代码段:

int inputi = 12;
int columns = 5;
int iterations = inputi / columns + (inputi % columns > 0 ? 1 : 0);
for (int iter = 0; iter < iterations; iter++) {
    for (int i = 1; i <= 10; i++) {
        for (int j = iter * columns + 1; j <= Math.min(inputi, (iter + 1) * columns); j++) {
            System.out.print(j + " x " + i + " = "  +(i * j) + "\t\t");
        }
        System.out.println();
    }
    System.out.println();
}


请注意,如果inputi很大,则当您具有1 x 1 = 11 x 10000000 = 1000000之类的语句时,可能必须用额外的空格填充输出,以避免布局问题

09-06 17:28