如何将数值转换为对应字符数量?Java实现递增星号输出
完善递增星号输出的Java代码
需求说明
将输入的数值(例如20)转换为多行竖排输出,每行显示的星号(*)数量随行数递增,即第n行显示n个星号。需完善给定Java代码中循环内“将行数转换为对应字符”的逻辑。
原代码问题分析
原代码循环从rows=0开始,会输出一行空内容(0个星号),不符合需求,建议将循环起始值改为rows=1,同时需要实现根据当前行数生成对应数量星号的逻辑,以下提供几种可行方案:
方案1:嵌套循环生成星号(兼容所有Java版本)
通过内层循环逐次输出星号,完成后换行:
import java.util.*; public class Increase { // 修正类名,符合Java大驼峰命名规范 public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入行数:"); int tot = input.nextInt(); for(int rows = 1; rows <= tot; rows++) { // 从1开始,对应第n行n个星号 // 内层循环生成对应数量的星号 for(int i = 0; i < rows; i++) { System.out.print("*"); } System.out.println(); // 换行 } input.close(); // 关闭Scanner资源,避免泄漏 } }
方案2:使用String.repeat()方法(Java 11及以上版本)
利用Java 11新增的String.repeat()方法,一行代码生成指定数量的星号字符串,代码更简洁:
import java.util.*; public class Increase { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入行数:"); int tot = input.nextInt(); for(int rows = 1; rows <= tot; rows++) { System.out.println("*".repeat(rows)); // 直接生成rows个星号的字符串并输出 } input.close(); } }
方案3:使用StringBuilder拼接星号(Java 11以下版本)
通过StringBuilder高效拼接字符,避免频繁字符串创建的性能损耗:
import java.util.*; public class Increase { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入行数:"); int tot = input.nextInt(); for(int rows = 1; rows <= tot; rows++) { StringBuilder sb = new StringBuilder(); for(int i = 0; i < rows; i++) { sb.append("*"); } System.out.println(sb.toString()); } input.close(); } }
补充说明
- 修正了原代码中类名、提示文本拼写的不规范问题;
- 新增
input.close()语句,规范资源管理。
内容的提问来源于stack exchange,提问作者CsH_
相关产品推荐
相关产品推荐

