如何修改Java代码实现输入多个匹配项时输出对应arr2的全部结果?
问题修正:遍历输入字符串并匹配输出对应结果
原始代码仅能输出第一个匹配项的对应结果(例如输入"am"时输出"ma"),需求改为:当输入多个字符串(如"am bm")时,输出arr2中对应的全部结果(如"ma"、"mb")。
你提供的修改后代码存在两处关键错误:
- 增强for循环中定义了变量
i但未使用,反而错误地用数组对象arr进行匹配判断 - 用数组
arr调用contains和indexOf,永远无法匹配到arr1中的字符串元素
修正后的代码
String[] arr1 = { "am", "bm", "cm" }; String[] arr2 = { "ma", "mb", "mc" }; btnNewButton_1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String line = textPane.getText(); String[] inputArr = line.split(" "); // 提前将arr1转为List,避免循环内重复转换 List<String> arr1List = Arrays.asList(arr1); // 遍历所有输入的字符串 for (String inputStr : inputArr) { // 判断当前输入字符串是否在arr1中 if (arr1List.contains(inputStr)) { int index = arr1List.indexOf(inputStr); // 输出arr2中对应索引的结果 System.out.println(arr2[index]); } } } });
核心修改说明
- 将循环变量命名为
inputStr(语义更清晰),遍历输入拆分后的每个字符串,用当前遍历的inputStr做匹配判断,替代原错误的数组arr - 提前将
arr1转为List对象,避免每次循环重复执行转换操作,提升代码效率 - 对每个输入字符串逐一判断,存在于
arr1时才获取对应索引并输出arr2的对应元素
内容的提问来源于stack exchange,提问作者Bəxtiyar Əli Ağayar
相关产品推荐
相关产品推荐

