Do While循环绘制正方形遇无限循环问题求助
问题分析与解决
你的代码陷入无限循环的核心原因是在外层do-while循环内部每次都重置了impresosAlto为0:
每次进入外层循环,impresosAlto = 0都会执行,之后内层循环完成一行打印,impresosAlto++让它变成1,接着判断循环条件impresosAlto != alto——只要你输入的alto大于1,这个条件永远为真,循环永远不会停止。
修复后的代码
把impresosAlto的初始化移到外层do-while循环外面,这样它的值就不会被每次循环重置:
int alto; int ancho; System.out.println("Dame el alto: "); alto = scanner.nextInt(); System.out.println("dame el ancho: "); ancho = scanner.nextInt(); int impresosAlto = 0; // 移到外层循环外初始化 int impresosAncho; do { impresosAncho = 0; do { System.out.print("*"); impresosAncho++; } while (impresosAncho != ancho); System.out.println(); impresosAlto++; } while (impresosAlto != alto);
额外建议
- 可以考虑用更简洁的
for循环来实现,逻辑会更清晰,不容易出现这类变量重置错误:
for (int i = 0; i < alto; i++) { for (int j = 0; j < ancho; j++) { System.out.print("*"); } System.out.println(); }
内容的提问来源于stack exchange,提问作者Luca Prestipino
相关产品推荐
相关产品推荐

