Java程序循环后println不执行,输出末尾无法换行问题求助
问题分析与修复
你的代码核心问题是循环逻辑错误,导致循环无法正常结束,因此循环外的换行代码永远执行不到,具体问题点和修复方案如下:
问题拆解
- 覆盖了初始计数变量:你在循环内重新给
numVals赋值,把原本用来记录要读取整数数量的变量覆盖成了每次读取的整数,导致循环条件i <= numVals彻底失控。比如输入初始值2后,第一次循环读取95,numVals变成95,循环会从i=-100一直执行到i=95,需要读取196个整数,远超过你实际输入的数量,程序会一直等待输入,永远走不到循环外的换行代码。 - 循环起始与次数错误:循环从
i=-100开始完全没有意义,你需要循环的次数是初始读取的numVals值,而非无意义的范围。
修复后的代码
import java.util.Scanner; public class AngleBrackets { public static void main(String[] args) { Scanner scnr = new Scanner(System.in); int count = scnr.nextInt(); // 保存要读取的整数数量,后续不再修改 // 循环count次,每次读取一个整数并输出 for(int i = 0; i < count; i++) { int currentNum = scnr.nextInt(); // 用单独变量存储每次读取的整数 System.out.print("<" + currentNum + ">"); } System.out.println(); // 循环结束后添加末尾换行 } }
修复说明
- 用
count变量保存初始读取的整数数量,避免在循环中被覆盖,确保循环次数准确。 - 循环从
i=0开始,执行count次,刚好读取指定数量的整数。 - 每次读取的整数用单独的
currentNum变量存储,不会干扰计数逻辑。 - 循环外的
System.out.println()会在所有整数输出完成后执行,完美添加末尾换行符。
测试时输入2 95 60,程序会输出<95><60>并自动换行,完全符合作业要求。
内容的提问来源于stack exchange,提问作者cmc29
相关产品推荐
相关产品推荐

