You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java不使用数组如何查找输入最大整数及其出现次数

问题解答

核心疑问回复

  • 是否可以仅用if else实现该功能?
    不行。由于用户输入的整数数量不固定,if else仅能处理预设好固定数量的输入场景,因此必须使用循环实现动态读取不定数量的输入。
  • 如何实现同一行读取多个用户输入?
    Scanner类的nextInt()方法会自动跳过空格、制表符、换行符等分隔符,无论用户是将多个整数写在同一行还是分多行输入,都可以正常逐个读取,不需要额外处理。
  • 哨兵值设置问题
    使用0作为终止哨兵值是可行的,你原代码的报错/死循环问题是逻辑错误导致,和哨兵值选择无关。

原代码存在的问题

  1. max初始值设置错误:固定初始化为1,若所有输入的整数都小于1,最终得到的最大值结果错误,应该将第一个用户输入的值作为初始max
  2. 循环体未读取新输入:循环体内没有再次调用input.nextInt()获取新值,导致userInput永远是第一次输入的值,进入死循环
  3. 最大值更新逻辑错误:不需要交换userInput和max的值,直接将max赋值为当前更大的userInput即可,且更新最大值时需要将count重置为1
  4. 结果输出位置错误:输出语句写在循环内部,会每次输入后都打印一次结果,应该移到循环结束后再输出最终结果
  5. 初始count计数逻辑错误:第一个输入作为初始最大值时,count就应该初始化为1

修正后的完整代码

package myjavaprojects2;
import java.util.*;
public class Max_number_count {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("请输入整数,输入0结束:");
        int userInput = input.nextInt();    
        // 处理输入哨兵值直接结束的特殊情况
        if (userInput == 0) {
            System.out.println("未输入有效整数");
            return;
        }
        // 初始化最大值和计数
        int max = userInput;
        int count = 1;
        
        while (userInput != 0) {
            if (userInput > max) {
                max = userInput;
                count = 1; // 出现新最大值,重置计数为1
            } else if (userInput == max) {
                count++;
            }
            // 读取下一个输入
            userInput = input.nextInt();
        }
        // 循环结束后输出最终结果
        System.out.println("The max number is " + max );
        System.out.println("The count is " + count );
    }
}

内容的提问来源于stack exchange,提问作者Trevon Corbett

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 17:06:03