Java中do-while循环运行异常求助:重复执行两数求和流程失败
嘿,作为Java新手碰到do-while循环的问题太正常啦!我先给你一个能完美实现「重复输入两数求和」的完整代码,再拆解你可能踩的那些新手坑~
能正常运行的示例代码
import java.util.Scanner; public class RepeatSum { public static void main(String[] args) { Scanner input = new Scanner(System.in); boolean keepRunning = true; // 控制循环的开关 do { // 读取第一个数 System.out.print("请输入第一个整数:"); int num1 = input.nextInt(); // 读取第二个数 System.out.print("请输入第二个整数:"); int num2 = input.nextInt(); // 计算并输出求和结果 int total = num1 + num2; System.out.println("两个数的和为:" + total); // 询问是否继续,这里要处理nextInt留下的换行符! System.out.print("要继续求和吗?输入Y继续,其他键退出:"); input.nextLine(); // 吃掉输入数字后残留的换行符 String choice = input.nextLine(); // 更新循环条件(你说不需要字符串比较,也可以用char判断,这里用简单的方式) keepRunning = choice.trim().equalsIgnoreCase("y"); } while (keepRunning); // 只要开关为true就重复循环 input.close(); System.out.println("程序结束~"); } }
你代码可能失效的常见原因
咱新手写do-while最容易踩这几个坑:
- Scanner缓冲区的换行符残留:用
nextInt()读取数字后,用户按下的回车键会留在输入缓冲区里,如果你直接用nextLine()读取后续的选择,会读到空字符串,导致循环直接终止。上面代码里的input.nextLine()就是用来解决这个问题的,一定要加! - 循环条件写错:比如把
while里的条件写成了false,或者逻辑搞反了(比如本来想满足条件继续循环,结果写成了满足就退出)。 - 控制变量的作用域错误:如果把控制循环的变量(比如上面的
keepRunning)定义在do代码块内部,那while条件里根本访问不到,直接编译报错。必须把这类变量放在循环外面定义。 - 没有正确初始化循环控制变量:比如你用一个char变量控制循环,但没提前赋值,编译器会报错说变量未初始化。
如果你的代码里有这些问题,对照着改一下应该就能正常运行啦~
内容的提问来源于stack exchange,提问作者Mooooo
相关产品推荐
相关产品推荐

