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

Java新手求助:使用for loop实现下一个客户ID查找程序

嘿,刚入门Java的话这个问题真的很适合练手!我来一步步帮你拆解怎么用for loop搞定它~

先理清楚需求

你的示例输入是5 2 3 5 4 1,输出是6——本质是要找出最小的未被使用的正整数客户ID。这里第一个数字5是已有的ID总数,后面的数字是打乱的已存在ID,因为1到5都被用了,所以下一个就是6。如果是比如输入4 1 3 4,那下一个ID就是2啦。

用纯for循环实现的Java代码

对于新手来说,先从纯for循环的版本入手,能更好理解基础逻辑:

import java.util.Scanner;

public class NextCustomerIdFinder {
    public static void main(String[] args) {
        Scanner inputScanner = new Scanner(System.in);
        
        // 第一步:读取输入里的ID总数
        int totalExistingIds = inputScanner.nextInt();
        // 创建数组来存所有已有的ID
        int[] existingIds = new int[totalExistingIds];
        
        // 用for循环把所有ID读进数组里
        for (int i = 0; i < totalExistingIds; i++) {
            existingIds[i] = inputScanner.nextInt();
        }
        
        int nextId = 1;
        boolean isNextIdFound = false;
        
        // 核心逻辑:从1开始逐个检查是否被使用
        while (!isNextIdFound) {
            boolean idExists = false;
            // 内层for循环遍历已有的ID,判断当前nextId是否存在
            for (int currentId : existingIds) {
                if (currentId == nextId) {
                    idExists = true;
                    break; // 找到就不用继续遍历了
                }
            }
            
            if (!idExists) {
                isNextIdFound = true; // 找到未被使用的ID啦
            } else {
                nextId++; // 这个ID被用了,检查下一个
            }
        }
        
        System.out.println("下一个客户ID是" + nextId);
        inputScanner.close();
    }
}

代码逐行解释

  1. 先用Scanner读取输入,第一个数字是已有的ID总数,接着用for循环把后面的所有ID存入数组。
  2. 我们从nextId=1开始检查(因为客户ID一般从1开始对吧):
    • 内层用for循环遍历已有的ID数组,看看当前nextId是不是已经被用了。
    • 如果找到相同的ID,说明这个数被用了,就把nextId加1继续检查。
    • 如果遍历完所有ID都没找到相同的,那这个nextId就是我们要的答案。
  3. 最后输出结果,比如你的示例输入,程序会依次检查1、2、3、4、5(都存在),然后检查6(不存在),就输出6啦。

可选的优化版本(用集合简化代码)

如果你已经接触过集合的话,可以用HashSet来代替数组,这样查找ID是否存在会更高效,代码也更简洁:

import java.util.HashSet;
import java.util.Scanner;

public class NextCustomerIdFinder {
    public static void main(String[] args) {
        Scanner inputScanner = new Scanner(System.in);
        int totalExistingIds = inputScanner.nextInt();
        HashSet<Integer> existingIdSet = new HashSet<>();
        
        // 用for循环把ID加入集合
        for (int i = 0; i < totalExistingIds; i++) {
            existingIdSet.add(inputScanner.nextInt());
        }
        
        int nextId = 1;
        // 用while循环代替内层for,直接用集合的contains方法判断
        while (existingIdSet.contains(nextId)) {
            nextId++;
        }
        
        System.out.println("下一个客户ID是" + nextId);
        inputScanner.close();
    }
}

这个版本核心逻辑和纯for循环是一样的,只是用集合的contains方法替代了手动写的内层for循环,效率更高,代码也更短~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:34:22