Java循环读取整数至输入0停止 排除0计算最小值问题求助
问题根因
你的代码问题出在先执行最小值更新逻辑,再判断是否为终止标识0,导致0被纳入最小值统计,全为正数输入时就会错误返回0。同时原代码存在int num = 0末尾漏写分号、未导入Scanner类的语法问题。
调整后代码
import java.util.Scanner; public class FindMin { public static void main(String[] args) { System.out.println("Write a list of integers and type 0 when you are finished"); int min = Integer.MAX_VALUE; int num = 0; Scanner in = new Scanner(System.in); do { // 读取用户输入 num = in.nextInt(); // 输入为0直接跳过统计,终止循环 if (num == 0) { break; } // 仅非0值参与最小值比较 if (num < min) { min = num; } } while (true); // 兼容未输入任何非0值直接输入0的边界场景 if (min == Integer.MAX_VALUE) { System.out.println("未输入有效整数"); } else { System.out.println("The minimum integer is " + min); } in.close(); } }
核心调整点
- 读取输入后先判断是否为终止标识0,若是直接终止循环,不参与最小值统计
- 仅非0的输入值才会进入最小值比较逻辑,完全兼容负数的正常统计
- 补充边界场景处理:如果用户直接输入0,不会返回
Integer.MAX_VALUE这类异常值,输出友好提示 - 补充了Scanner类导入和资源释放逻辑,修复原代码的语法错误
测试验证
- 输入
[-2,10,15,-1,0]:最小值统计为-2,符合预期 - 输入
[6,10,30,0]:最小值统计为6,符合预期
内容的提问来源于stack exchange,提问作者Ciel
相关产品推荐
相关产品推荐

