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

Java数组重复字符串判断及输出语句未执行问题咨询

问题解答

一、为何System.out.println(morse[0]);未执行?

有两个核心原因:

  1. 字符串比较错误使用==
    Java中==比较的是对象的内存引用,而非字符串内容。当你用morseCodeMas[0]=="...."时,只有当morseCodeMas[0]和字面量"...."指向内存中同一个对象时才会返回true:
  • 输入字符串是".... "(末尾带空格)时,split(" ")生成数组["....", ""],其中morseCodeMas[0]是新创建的字符串对象,和常量池中的"...."引用不同,==返回false,if条件不成立,输出语句不执行。
  • 输入字符串是"...."时,split(" ")返回的数组仅包含原字面量字符串,此时引用和"...."相同,==返回true,输出语句执行。

正确的字符串内容比较应该用equals()方法,修改后代码:

if (morseCodeMas[0].equals("...."))
  1. 循环条件存在隐患
    你的循环条件是i != english.length - 1,当english数组长度为2时,english.length -1是1,循环仅执行1次(i=0时)。如果后续数组长度变化,这个条件可能导致循环提前终止,建议改为更通用的i < english.length或者根据实际需求调整。

二、实现if语句避免匹配两个数组中的重复字符串

以下是两种常见场景的实现示例:

场景1:遍历数组A,输出不在数组B中的元素

public static void main(String[] args) {
    String[] english = {"a", "b", "...."};
    String[] morse = {"....", "-..."};

    for (String eng : english) {
        boolean isDuplicate = false;
        // 遍历morse数组检查是否存在重复
        for (String mor : morse) {
            if (eng.equals(mor)) {
                isDuplicate = true;
                break;
            }
        }
        // 元素不重复时执行逻辑
        if (!isDuplicate) {
            System.out.println("非重复元素:" + eng);
        }
    }
}

场景2:判断两个数组对应索引的元素是否重复

public static void main(String[] args) {
    String[] arr1 = {"apple", "banana", "cherry"};
    String[] arr2 = {"apple", "orange", "cherry"};

    // 假设两个数组长度相同
    for (int i = 0; i < arr1.length; i++) {
        // 对应元素不重复时执行逻辑
        if (!arr1[i].equals(arr2[i])) {
            System.out.println("索引" + i + "处元素不重复:" + arr1[i] + " vs " + arr2[i]);
        }
    }
}

内容的提问来源于stack exchange,提问作者dadadaniil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 10:50:36