为啥我的条件从未满足? [复制]

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))

【讨论】:

以上是关于为啥我的条件从未满足? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥'for'循环条件失败? [复制]

为啥用@分配字符串? [复制]

了解 QVector append() - 为啥它有条件地复制?

为啥这个简单的条件表达式不起作用? [复制]

如何重复代码直到满足特定条件? [复制]

为啥我们使用 volatile 关键字? [复制]