Java实现多输入布尔匹配及正确输入次数统计的问题求助
问题解答
需求完全可行,你的场景确实属于布尔匹配场景
你通过判断输入是否与目标数组中的元素匹配,用boolean match标记结果,这就是典型的布尔匹配逻辑,完全没问题。
你的问题根源:缺少循环控制多次输入,count++位置不对
原代码只执行了一次输入检查,没有循环结构支持多次输入;另外count++需要放在匹配成功的分支里,也就是if (capital.equalsIgnoreCase(currentInput))代码块内,同时要在循环外初始化count变量,否则每次循环都会重置计数。
修改后的完整代码
import java.util.Scanner; public class CapitalQuiz { // 假设stateCapitals是已定义的二维数组,这里示例结构 private static String[][] stateCapitals = { {"Alabama", "Montgomery"}, {"Alaska", "Juneau"} // 可补充其他州与首府数据 }; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int correctCount = 0; // 初始化正确次数计数器,放在循环外避免重置 System.out.println("欢迎输入美国州首府,输入quit结束"); while (true) { System.out.print("请输入首府:"); String currentInput = scanner.nextLine().trim(); // 退出条件:输入quit时结束程序 if (currentInput.equalsIgnoreCase("quit")) { break; } boolean match = false; // 提取所有首府到数组(对应原代码stateCapitals[1]的逻辑) String[] capitals = new String[stateCapitals.length]; for (int i = 0; i < stateCapitals.length; i++) { capitals[i] = stateCapitals[i][1]; } for (String capital : capitals) { if (capital.equalsIgnoreCase(currentInput)) { match = true; correctCount++; // 匹配成功时计数+1 break; } } if (match) { System.out.println("Correct!当前正确次数:" + correctCount); } else { System.out.println("incorrect"); } } // 结束时输出最终统计 System.out.println("程序结束,你总共答对了" + correctCount + "次"); scanner.close(); } }
关键修改点说明
- 多次输入实现:用
while(true)无限循环,通过输入"quit"触发break退出,支持反复输入 - 正确计数逻辑:
correctCount在循环外初始化,仅在匹配成功时执行correctCount++,保证计数连续累加 - 布尔匹配逻辑保留:原有的
boolean match标记匹配结果的逻辑完全保留,符合你的需求
内容的提问来源于stack exchange,提问作者Natebd
相关产品推荐
相关产品推荐

