我正在制作一个 java 程序,它显示如下所示的乘法表:
但是我只能得到第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
预期输出:
实际输出:
最佳答案
我建议
- 创建包含所需列数的单独变量
- 计算将打印的行数(请参阅
迭代
) - 逐行打印
请参阅下面的代码片段:
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();
}
请注意,如果输入很大,当您有诸如 1 x 1 = 1
和 1 x 10000000 之类的语句时,您可能需要用额外的空格填充输出,以避免布局问题= 1000000
关于Java乘法表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41572030/