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
相关产品推荐
相关产品推荐

