Java数组重复字符串判断及输出语句未执行问题咨询
问题解答
一、为何System.out.println(morse[0]);未执行?
有两个核心原因:
- 字符串比较错误使用
==
Java中==比较的是对象的内存引用,而非字符串内容。当你用morseCodeMas[0]=="...."时,只有当morseCodeMas[0]和字面量"...."指向内存中同一个对象时才会返回true:
- 输入字符串是
".... "(末尾带空格)时,split(" ")生成数组["....", ""],其中morseCodeMas[0]是新创建的字符串对象,和常量池中的"...."引用不同,==返回false,if条件不成立,输出语句不执行。 - 输入字符串是
"...."时,split(" ")返回的数组仅包含原字面量字符串,此时引用和"...."相同,==返回true,输出语句执行。
正确的字符串内容比较应该用equals()方法,修改后代码:
if (morseCodeMas[0].equals("...."))
- 循环条件存在隐患
你的循环条件是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
相关产品推荐
相关产品推荐

