如何编写Java代码,输入指定区间的m和n并生成m行n列乘法表?
Java实现指定范围的乘法表生成器
需求说明
需要接收满足以下条件的数值:
- m 处于开区间 (11, 15),即 m 的有效值为 12、13、14
- n 处于闭区间 [12, 20],即 n 的有效值为 12 到 20(包含两端)
程序验证输入合法后,生成一个 m 行 n 列的乘法表,每行展示该行数与1到n的乘积结果。
完整代码
import java.util.Scanner; public class MultiplicationTableGenerator { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // 接收并验证m的值 int m = 0; while (true) { System.out.print("请输入m的值(必须是12、13、14):"); if (scanner.hasNextInt()) { m = scanner.nextInt(); if (m > 11 && m < 15) { break; } else { System.out.println("输入错误!m必须在(11,15)区间内,请重新输入。"); } } else { System.out.println("输入错误!请输入整数。"); scanner.next(); // 清除非整数输入 } } // 接收并验证n的值 int n = 0; while (true) { System.out.print("请输入n的值(必须是12到20之间的整数,包含两端):"); if (scanner.hasNextInt()) { n = scanner.nextInt(); if (n >= 12 && n <= 20) { break; } else { System.out.println("输入错误!n必须在[12,20]区间内,请重新输入。"); } } else { System.out.println("输入错误!请输入整数。"); scanner.next(); // 清除非整数输入 } } // 生成乘法表 System.out.println("\n" + m + "行" + n + "列乘法表:"); for (int i = 1; i <= m; i++) { for (int j = 1; j <= n; j++) { // 格式化输出,保证数值对齐 System.out.printf("%4d", i * j); } System.out.println(); // 每行结束换行 } scanner.close(); } }
代码说明
- 输入验证:通过循环强制确保用户输入符合区间要求,同时处理非整数输入的异常情况,避免程序崩溃。
- 乘法表生成:双层for循环分别控制行数和列数,使用
printf格式化输出让乘法表的数值对齐,提升可读性。 - 用户提示:每一步输入都给出明确指引,错误输入时会告知具体原因,引导用户修正输入。
内容的提问来源于stack exchange,提问作者Priscilla Vanderpuye
相关产品推荐
相关产品推荐

