Java Scanner输入数组匹配问题求助:修正数组值判断逻辑
问题修正与解释
你的代码存在三个核心问题,以下是修正方案和说明:
问题分析
- 类型不匹配:
product是单个字符串对象,brand是字符串数组,直接用==比较两者永远不会成立,因为它们的类型完全不同。 - 字符串比较方式错误:Java中
==用于比较对象的内存引用,而非字符串内容;判断字符串内容相等应该使用equals()或equalsIgnoreCase()(忽略大小写)方法。 - 未遍历数组检查元素:你需要逐个检查数组中的每个元素,判断输入的字符串是否与其中任意一个匹配。
修正后的代码
import java.util.Scanner; public class test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String[] brand = {"phone", "mobile", "cell"}; System.out.print("find me some "); String product = sc.next(); // 标记是否匹配到数组中的元素 boolean isMatch = false; // 遍历数组检查每个元素 for (String b : brand) { if (product.equalsIgnoreCase(b)) { // 忽略大小写匹配,也可以用equals()严格匹配 isMatch = true; break; // 找到匹配项后跳出循环 } } if (isMatch) { System.out.println("please enter your brand, Phone brands available : Apple, Samsung"); } } }
额外优化建议
- 如果需要更简洁的写法,可以使用Java 8+的Stream API来判断:
boolean isMatch = java.util.Arrays.stream(brand).anyMatch(b -> b.equalsIgnoreCase(product));
- 类名建议遵循Java命名规范,首字母大写,比如将
test改为ProductChecker。
内容的提问来源于stack exchange,提问作者Naman Aadhar
相关产品推荐
相关产品推荐

