我正在制作一个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
预期产量:
实际输出:
最佳答案
我建议
创建具有所需列数的单独变量
计算要打印多少行(请参见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 = 1
和1 x 10000000 = 1000000
之类的语句时,可能必须用额外的空格填充输出,以避免布局问题