我是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)){...}