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
相关产品推荐
相关产品推荐

