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

Java如何实现自定义end命令终止ArrayList输入后随机选取元素

自定义退出指令的ArrayList录入实现方案

原有代码问题

  • 你写的sc.Next()是不存在的方法,Scanner类没有该API
  • 原循环逻辑没有做退出指令判断,无法在输入指定关键词时终止
  • 缺少空集合校验,用户直接输入退出指令时会触发数组越界错误
  • 若混用next()和nextLine()会出现缓冲区残留换行符,导致读取空行的问题

修正后可运行代码

import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

public class DinnerRandomPicker {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        ArrayList<String> dinnerList = new ArrayList<>();
        int inputIndex = 1;
        // 自定义退出命令,修改该常量值即可更换触发退出的关键词
        final String EXIT_KEYWORD = "end";

        // 无限循环接收输入,匹配到退出指令时手动break
        while (true) {
            System.out.println("Respond end when done. Please enter dinner option #" + inputIndex);
            String userInput = sc.nextLine().trim();
            
            // 匹配退出指令,终止录入循环
            if (EXIT_KEYWORD.equalsIgnoreCase(userInput)) {
                break;
            }

            // 过滤空输入,避免用户误敲回车存入空字符串
            if (!userInput.isBlank()) {
                dinnerList.add(userInput);
                inputIndex++;
            }
        }

        // 校验集合非空,避免空集合调用随机方法报错
        if (dinnerList.isEmpty()) {
            System.out.println("未录入任何晚餐选项,无法执行随机选择");
            sc.close();
            return;
        }

        // 随机选取逻辑
        Random random = new Random();
        int randomPos = random.nextInt(dinnerList.size());
        String result = dinnerList.get(randomPos);
        System.out.println("Random Element = " + result);

        sc.close();
    }
}

关键逻辑说明

  • 采用while(true)构造无限录入循环,不需要依赖Scanner的hasNext()判断,逻辑更可控
  • 整行读取用户输入后第一时间做退出指令匹配,匹配成功直接跳出循环进入后续选餐逻辑,匹配失败才将内容存入列表
  • 字符串内容比较使用equals()/equalsIgnoreCase()方法,禁止用==判断字符串内容相等,后者仅比较对象内存地址,会出现判断失效问题
  • 加入trim()/isBlank()判断是为了兼容用户误输入前后空格、误敲回车的场景,不需要可以直接删除
  • 随机选餐前增加空集合校验,避免用户未录入任何内容直接触发退出时,nextInt(0)抛出参数非法异常

运行效果完全匹配给出的示例,输入end时会立刻终止录入,输出列表中随机选中的晚餐选项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 13:36:18