为啥我的条件从未满足? [复制]
Posted
技术标签:
【中文标题】为啥我的条件从未满足? [复制]【英文标题】:Why is my condition never met? [duplicate]为什么我的条件从未满足? [复制] 【发布时间】:2014-07-21 16:30:05 【问题描述】:在我的 for 循环的底部获取战利品。这可能是一个简单的逻辑错误,但由于某种原因,“如果”条件从未满足。很抱歉问了一些基本的东西,但我搜索了又搜索,似乎找不到答案。谢谢你帮助一个菜鸟。
Scanner scan = new Scanner(System.in);
System.out.println("How large would you like the array to be? (number)");
int arraySize = scan.nextInt();
scan.nextLine();
String [] myArray = new String [arraySize];
int i = 0;
if (arraySize <= 0 )
System.out.println("Please enter a positive integer for the array size. Rerun program when ready.");
else
while (i < myArray.length)
System.out.println("Please type a string to be entered in the array");
myArray[i] = scan.nextLine();
i++;
System.out.println("Array contents: " + Arrays.toString(myArray));
System.out.println("What element would you like would you like to find in the array by performing a linear search?");
String search = scan.nextLine();
for (int j = 0; j < myArray.length; j++)
if (myArray[j] == search)
int location = j + 1;
System.out.println("The element, " + search + " was found in the array, in which the linear search looped " + location + " times to find it." );
j = myArray.length;
【问题讨论】:
我的猜测:字符串相等又来了。永远不要将字符串与==
进行比较。请始终改用equals(...)
或equalsIgnoreCase(...)
方法。
if (myArray[j] == search)
使用 .equals()
比较两个字符串时必须使用.equals
。如:if (myArray[j].equals(search))
【参考方案1】:
您应该始终使用.equals()
而不是==
运算符进行字符串比较。只有当两个引用都指向同一个 String 实例时,==
运算符才会评估为 true。要检查字符串内容是否相等,您可以使用.equals()
或equalsIgnoreCase()
。
所以改变你的搜索条件
if (myArray[j] == search)
到
if (myArray[j].equals(search))
【讨论】:
我希望您的回答没有前 9 个单词(“除非两个引用都指向同一个 String 实例”)。指望字符串引用是相同的通常是一个坏主意(而且没有必要),而且它会让您看起来不知道自己在做什么。【参考方案2】:您使用的是==
而不是.equals
,它不会检查字符串是否相等。 .equals
将检查值是否相等,而不仅仅是这样的参考数字:
if( myArray[j].equals(search))
【讨论】:
以上是关于为啥我的条件从未满足? [复制]的主要内容,如果未能解决你的问题,请参考以下文章