不使用数组如何获取Scanner输入多数字的最大值,输入0时输出结果
完整实现代码
import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int a; int maxNum = Integer.MIN_VALUE; // 记录最大值,初始设为整数最小值 for(int i = 1; i > 0; ++i) { a = scanner.nextInt(); // 遇到终止输入标记 if(a <= 0) { if(i == 1) { // 首次输入就是终止标记,无有效数字 System.out.println("No Number entered."); } else { // 有有效输入,输出最大值 System.out.println("The largest number is " + maxNum); } break; } // 输入是有效正整数,更新最大值 if(a > maxNum) { maxNum = a; } System.out.println("Number "+i+": "+a); } scanner.close(); } }
关键修改说明
- 新增
maxNum变量存储当前输入的最大值,每次输入有效正整数时直接和当前最大值比较更新,全程不需要使用数组存储所有输入值,符合需求要求 - 简化了原有重复冗余的条件判断分支,仅通过输入终止时的循环次数
i判断是否存在有效输入,逻辑更清晰 - 补充了
Scanner的导包语句和使用后的关闭操作,代码更规范 - 将原有单与
&对应的重复判断逻辑优化为更严谨的分支结构,避免无效的判断执行 - 可直接运行测试:输入
3 5 6 0会输出The largest number is 6,首次输入0会输出No Number entered.,完全符合需求
内容的提问来源于stack exchange,提问作者Pascal L.
相关产品推荐
相关产品推荐

