【问题标题】:Output is always not found even if the element exists in the array [duplicate]即使元素存在于数组中,也总是找不到输出[重复]
【发布时间】:2024-04-29 19:40:02
【问题描述】:

这是一个简单的 java 程序,它接受用户输入并将其存储在一个字符串数组中,然后检查该数组中是否有一个值,但由于某种原因,即使我输入了一个有效元素,也总是找不到输出存在于数组中

import java.util.Scanner;

class HelloWorld {
    public static void main(String[] args){
        Scanner s1 = new Scanner(System.in);
        Scanner s2 = new Scanner(System.in);
        String[] arr = new String[2];
        String validate_var;
        for(int i =0 ; i<2 ; i++){
        System.out.println("Enter element "+(i+1)+":");
        arr[i]=s1.next();
        }
        System.out.println("Enter the value you want to remove: ");
        validate_var = s2.next();
        for(int i =0 ; i<2 ; i++){
            if(validate_var==(String)arr[i].replaceAll("//s","")){
                System.out.println("Found");
                break;
            }
            else{
                System.out.println("Not found!");
                break;
            }
        }
        
    }
}

【问题讨论】:

    标签: java arrays user-input


    【解决方案1】:

    java中的==操作符比较String对象的引用,改用equals

    // from 
    if(validate_var==(String)arr[i].replaceAll("//s",""))
    // to 
    if(validate_var.equals((String)arr[i].replaceAll("//s","")))
    

    检查the difference between shallow and deep equality

    【讨论】:

    • .replaceAll("//s","")可疑。
    • @ElliottFrisch 我们没有输入数据的确切样本,所以我无法确认,我猜他打算使用“\\s”,但我不确定,但它可能也要多疑