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

Java实现单行输入存入ArrayList的代码优化求助

优化单行逗号分隔整数输入的Java代码方案

针对你需要实现单行输入逗号分隔整数存入ArrayList、排序并获取最值的需求,以下是优化后的代码,解决原代码只能逐个输入、无法处理逗号分隔输入的问题:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class IntegerListHandler {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        ArrayList<Integer> numList = new ArrayList<>();

        // 提示用户输入逗号分隔的整数
        System.out.println("请输入逗号分隔的整数(例如:12,2,1,5,10):");
        String inputLine = input.nextLine().trim();

        // 处理输入内容
        if (!inputLine.isEmpty()) {
            // 按逗号分割字符串,同时兼容逗号后带空格的输入
            String[] numStrings = inputLine.split(",\\s*");
            for (String numStr : numStrings) {
                try {
                    int num = Integer.parseInt(numStr);
                    numList.add(num);
                } catch (NumberFormatException e) {
                    System.out.println("警告:'" + numStr + "' 不是有效整数,已跳过该值");
                }
            }
        }

        // 处理无有效输入的情况
        if (numList.isEmpty()) {
            System.out.println("未输入有效整数");
            input.close();
            return;
        }

        // 输出结果
        System.out.println("输入的有效整数列表:" + numList);
        Collections.sort(numList);
        System.out.println("排序后的列表:" + numList);
        System.out.println("最小值:" + numList.get(0));
        System.out.println("最大值:" + numList.get(numList.size() - 1));

        input.close();
    }
}

相关优化建议

  • 输入兼容性:通过split(",\\s*")实现逗号分隔的同时,支持逗号后带空格的输入格式(如12, 34, 56),适配更多用户输入习惯。
  • 异常防护:捕获NumberFormatException,避免用户输入非整数内容导致程序崩溃,同时给出明确的错误提示。
  • 边界处理:增加空输入判断,当用户未输入任何有效整数时,直接提示并终止程序,避免后续逻辑出错。
  • 资源规范:调用input.close()关闭Scanner资源,符合Java资源管理的规范。
  • 代码可读性:使用语义化变量名(如numList替代原代码的al),简化冗余逻辑,提升代码的可维护性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 16:47:38