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

C#使用while循环绘制星号方框运行异常,初学者求解决指导

问题原因

  • 核心问题是内层循环的计数器y只在程序启动时初始化了一次:第一次外层循环执行完成后,y的值已经增加到number + 1,后续进入外层循环时,y始终大于判断条件y <= number,所以内层循环不会再执行,只会输出空行。
  • 其次循环判断条件用<=会导致输出的方框边长比输入的数值多1,比如输入5会输出6行星号,不符合常规的边长需求。

修正后代码

using System;

namespace whilebox2
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Enter a number: ");
            int number = Convert.ToInt32(Console.ReadLine());
            int x = 0;

            while (x < number)
            {
                // 每次打印新行前重置y的计数
                int y = 0;
                while (y < number)
                {
                    Console.Write("*");
                    y++;
                }
                Console.WriteLine();
                x++;
            }
            Console.ReadLine();
        }
    }
}

调整说明

  • 将y变量的声明和初始化移到外层循环内部,保证每打印新的一行之前,y都会从0开始计数
  • 把循环判断条件从<=改成<,输入N就会输出N行、每行N个星的正方形,符合预期
  • 把x++调整到外层循环末尾,逻辑更清晰,避免计数提前导致的边界错误

输入5运行后,正确输出为:

*****
*****
*****
*****
*****

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:36:03