You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java数字图案打印代码问题求助:请帮我排查代码错误

排查你的Java图案生成代码错误

咱先梳理下你代码里的几个关键问题:

  • 语法错误:未完成的赋值语句:k = k...这一行完全没写完,Java编译器肯定会报错。看你的逻辑,应该是想让k每次循环后递增1,改成k++或者k = k + 1就能解决这个语法问题。
  • 缺少换行,图案无法成行:内层循环打印完一行的内容后,没有执行换行操作,所有输出会挤在同一行,根本没法形成多行的图案效果,得在每次内层循环结束后加一句System.out.println()。
  • 冗余变量(可选优化):其实如果你的目标是每行的元素数量和当前行数一致(比如第1行1个元素,第2行2个...),完全不需要额外的k变量,直接用外层循环的i来控制内层循环的次数就行,代码会更简洁。

修正后的基础版本(每行元素数量与行数一致,数字从1开始)

package welcome;
import java.util.Scanner;
public class Welcome {
    public static void main(String args[]) {
        Scanner sc= new Scanner(System.in);
        System.out.println("enter the rows");
        int rows= sc.nextInt();
        System.out.println("here is the pattern");
        
        // 外层循环控制行数
        for(int i=1; i<=rows; i++) {
            // 内层循环控制每行打印的元素个数,和当前行数i匹配
            for(int j=1; j<=i; j++) {
                System.out.print("* " + j + " ");
            }
            // 每行打印完后换行,形成多行图案
            System.out.println();
        }
        sc.close(); // 记得关闭Scanner资源,避免资源泄漏
    }
}

如果输入3行,输出效果会是:

* 1 
* 1 * 2 
* 1 * 2 * 3 

如果你想要数字连续递增的样式(比如每行数字不重复从头开始)

可以保留k变量来累计数字,修正后的代码如下:

package welcome;
import java.util.Scanner;
public class Welcome {
    public static void main(String args[]) {
        Scanner sc= new Scanner(System.in);
        System.out.println("enter the rows");
        int rows= sc.nextInt();
        System.out.println("here is the pattern");
        int k=1; // 用来累计数字
        
        for(int i=1; i<=rows; i++) {
            for(int j=1; j<=i; j++) {
                System.out.print("* " + k + " ");
                k++; // 每次打印后数字加1
            }
            System.out.println();
        }
        sc.close();
    }
}

输入3行的话,输出会是:

* 1 
* 2 * 3 
* 4 * 5 * 6 

内容的提问来源于stack exchange,提问作者Aditya Mehta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:31:48