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

Java打印星号菱形程序无法进入基础FOR循环,无输出无报错如何排查

问题根因

你的for循环判断条件写反了,所以从一开始就不满足执行条件,直接跳过了整个循环体。

你写的外层循环规则是:

for (int i = 0; i >= n; i++) {
    // 循环体
}

规则是每次执行循环体前,先判断中间的条件i >= n是否成立,只有成立才会执行循环内的代码。你输入的n是正奇数(比如3、5、7),i初始值为0,0 >= 3这类判断从最开始就不成立,所以循环一次都不会跑,自然没有任何输出,也不会触发异常。

你代码里其余几个for循环也存在相同的条件写反问题:

  • 输出空格的循环:for (int j = (n / 2); j <= 0; j--),n为正奇数时n/2最小是1,1 <= 0永远不成立
  • 输出星号的循环:for (int k = 0; k >= i; k++),i大于0时0 >= i不成立,循环无法执行

修正参考代码

package diamante;

import java.util.Scanner;

public class Diamente {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter an odd number for the size of the diamond");
        int n = sc.nextInt();
        // 校验输入合法性
        if (n % 2 == 0) {
            System.out.println("请输入奇数");
            sc.close();
            return;
        }
        int mid = n / 2;
        // 打印上半部分(含中心线)
        for (int i = 0; i <= mid; i++) {
            // 打印左侧空格
            for (int j = 0; j < mid - i; j++) {
                System.out.print(" ");
            }
            // 打印星号
            for (int k = 0; k < 2 * i + 1; k++) {
                System.out.print("*");
            }
            System.out.println();
        }
        // 打印下半部分
        for (int i = mid - 1; i >= 0; i--) {
            // 打印左侧空格
            for (int j = 0; j < mid - i; j++) {
                System.out.print(" ");
            }
            // 打印星号
            for (int k = 0; k < 2 * i + 1; k++) {
                System.out.print("*");
            }
            System.out.println();
        }
        sc.close();
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 12:15:03