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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 09:27:27