如何用Java实现1到20范围的乘法表输出,仅使用循环可以实现吗?
Java乘法表需求实现方案
需求可行性说明
1. 是否可以仅用循环实现
是,仅使用循环完全可以实现该需求,核心只要做好两步控制:
- 输入值合法性校验:判断用户输入的N是否在1~20范围内,超出范围直接跳过输出
- 循环边界控制:调整循环的起止范围实现指定区间的乘法公式输出
2. 不使用循环的实现方式
如果不允许使用循环,可以用递归替代循环逻辑,通过方法调用自身的方式完成多次输出,递归终止条件设为乘数超出要输出的上限即可。
修复后可运行代码(循环实现版本)
原代码存在三处语法问题:for循环缺少i自增逻辑、字符串拼接缺少+运算符、仅输出到乘数10的逻辑可以根据需求调整,修复并加入1~20范围校验后的代码如下:
import java.io.*; public class Solution { public static void main(String[] args) throws IOException { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(bufferedReader.readLine().trim()); // 仅处理1~20范围内的输入 if (N >=1 && N <=20) { // 此处输出1到10的乘法表,可根据需求调整循环上限 for (int i = 1; i <= 10; i++) { System.out.println(N + " x " + i + " = " + (N * i)); } } bufferedReader.close(); } }
无循环递归实现版本
import java.io.*; public class Solution { // 递归输出乘法表的方法 private static void printMultiplication(int n, int currentMultiplier) { // 递归终止条件:乘数超过10就停止,可按需调整终止阈值 if (currentMultiplier > 10) { return; } System.out.println(n + " x " + currentMultiplier + " = " + (n * currentMultiplier)); // 递归调用,乘数加1 printMultiplication(n, currentMultiplier + 1); } public static void main(String[] args) throws IOException { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(bufferedReader.readLine().trim()); if (N >=1 && N <=20) { // 从乘数1开始递归输出 printMultiplication(N, 1); } bufferedReader.close(); } }
内容的提问来源于stack exchange,提问作者hannan hub
相关产品推荐
相关产品推荐

