如何使用输入来获取列表中的特定元素



我是Java/编程的新手,我正在尝试编写一个简单的程序,如果该元素等于某些用户输入,则从列表中获取元素。我正在使用 for 循环和 if 语句来实现这一点,但即使用户输入和元素匹配,编程也不会将元素打印到屏幕上。如果有人可以解释为什么这不起作用,将不胜感激。干杯

public static void main(String[] args){
    ArrayList<String> names = new ArrayList<String>();
    String tempObject; 
    String findName;
    names.add("John");
    names.add("Ronny");
    names.add("Gona");
    names.add("Gina");
    Scanner Input = new Scanner(System.in);
    System.out.print("Search list for: ");
    findName = Input.nextLine();
    for (int i = 0; i < names.size(); i++){
        tempObject =  names.get(i);
        if (tempObject == findName){
            System.out.print("n" + tempObject);
        }
    }
}

你去吧:

if (tempObject.equals(findName)){
   System.out.print("n" + tempObject);
}

对于String的对象,请始终使用方法 equals() ,因为==将比较引用,而不是值(或equals()方法中设置的内容 - 在 String 中,它将比较大小,然后比较同一位置的每个char,如果它们相等 - 此外,如果需要,您有一个名为 equalsIgnoreCase 的方法 - 有时, 最好将其用于用户输入)。

对于原语,您将不得不使用 == .

平等和身份是有区别的,在上面的代码中,你使用了身份而不是平等,如果你改变你的代码(使用平等),如下所示,你会得到你需要的

if (tempObject.equal(findName)){
        System.out.print("n" + tempObject);
}

您应该使用字符串等于来比较两个字符串的相等性,而不是仅比较引用的运算符==

尝试像这样的 if 语句:

if (tempObject.equals(findName)){...}

相关内容

  • 没有找到相关文章