Java实现输入数字后逐行递增打印序列的问题求助
解决Java逐行打印递增序列的问题
你的需求是输入一个数字后,逐行打印从1到当前行数的递增序列,但现有代码仅能输出一行完整序列,问题出在只用了单层循环拼接所有数字,没有控制逐行输出的逻辑。
问题分析
原代码通过一次循环把1到输入数字的所有值拼接到一个StringBuilder,最后只打印一次,自然只有一行。要实现逐行输出,需要两层嵌套循环:外层循环控制行数,内层循环生成当前行的数字序列。
修改后的高效版代码
使用StringBuilder减少频繁IO操作,适合处理较大的输入数字:
import java.util.Scanner; public class Series { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("Insert number "); int a = sc.nextInt(); // 外层循环控制要打印的行数,从1到输入的数字a for (int row = 1; row <= a; row++) { StringBuilder sb = new StringBuilder(); // 内层循环生成当前行的数字序列 for (int num = 1; num <= row; num++) { sb.append(num); // 非末尾数字添加空格分隔 if (num != row) { sb.append(" "); } } // 打印当前行并换行 System.out.println(sb.toString()); } sc.close(); } }
简洁版代码(直观易读)
如果输入数字不大,也可以直接逐次打印,代码更简洁:
import java.util.Scanner; public class Series { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("Insert number "); int a = sc.nextInt(); for (int row = 1; row <= a; row++) { for (int num = 1; num <= row; num++) { System.out.print(num); // 数字间加空格,最后一个数字不加 if (num != row) { System.out.print(" "); } } // 每行结束后换行 System.out.println(); } sc.close(); } }
代码说明
- 外层循环变量
row从1到输入的数字a,每一次循环对应一行输出 - 内层循环变量
num从1到当前的row,负责生成当前行的数字序列 - 两种方式都处理了数字间的空格分隔,避免行尾出现多余空格
- 最后关闭Scanner资源,养成良好的资源管理习惯
内容的提问来源于stack exchange,提问作者matteo panaro
相关产品推荐
相关产品推荐

