Java ArrayList字符串输入

Java ArrayList字符串输入,java,arraylist,input,Java,Arraylist,Input,我有一个方法,在ArrayList中搜索包含两个私有字段的对象。方法如下: public int searchContactName(String name){ int foundIndex =-1; for(int i = 0; i < contacts.size(); i++){ if(contacts.get(i).getName() == name){ foundIndex = i; } }

我有一个方法,在ArrayList中搜索包含两个私有字段的对象。方法如下:

public int searchContactName(String name){

    int foundIndex =-1;
    for(int i = 0; i < contacts.size(); i++){
        if(contacts.get(i).getName() == name){
            foundIndex = i;
        }
    }

    return foundIndex;
}
但是如果我尝试将它与scener.next()一起使用,就像thins一样,用于相同的名称

String name = scanner.next();
searchContactName(name);
这是给我-1。我不明白,我需要以某种方式格式化输入?如果我使用扫描器,它是相同的类型,或者在某种程度上是不同的?

始终使用String.equals()而不是==

你的支票应该是

  if(contacts.get(i).getName().equals(name))
另请参阅此部分,了解不应使用==

的原因

String name = scanner.nextline(); searchContactName(name);
以及:


您应该使用equals方法来比较字符串值

public int searchContactName(String name){

    int foundIndex =-1;
    for(int i = 0; i < contacts.size(); i++){
        if(contacts.get(i).getName().equals(name)){
            foundIndex = i;
        }
    }

    return foundIndex;
}
public int searchContactName(字符串名称){
int foundIndex=-1;
对于(int i=0;i
scanner.next()将返回ArrayList中的对象。在你的情况下,它的名字并不准确。应该对从scanner.next()获取的对象调用getName()方法。验证您编写的代码“contacts.get(i).getName()”,该代码的工作位置是操作符检查两个对象是否是该对象的同一实例,对于硬编码字符串文本,这恰好是真的。但是,检查这一点的正确方法是使用该方法,该方法测试两个对象是否具有相同的值:

public int searchContactName(String name){

    int foundIndex =-1;
    for (int i = 0; i < contacts.size(); i++){
        if (contacts.get(i).getName().equals(name)) { // here!
            foundIndex = i;
        }
    }

    return foundIndex;
}
public int searchContactName(字符串名称){
int foundIndex=-1;
对于(int i=0;i
contacts.get(i).getName()==name
更改为
contacts.get(i).getName().equals(name)
您是否尝试过使用
scanner.nextLine()
?您应该只收到nextLine()显式返回字符串的相同输入。如何在Java中比较字符串“您应该对从scanner.next()获取的对象调用getName()方法”没有意义
Scanner
始终用于扫描表示文本的输入,因此
next
只能返回
String
(从技术上讲,它是一个对象),但String类没有
getName()
方法。你能澄清你的答案吗?同意。我的错。解释错误。将
next
更改为
nextLine
会解决什么问题?
public int searchContactName(String name){

    int foundIndex =-1;
    for(int i = 0; i < contacts.size(); i++){
        if(contacts.get(i).getName().equals(name)){
            foundIndex = i;
        }
    }

    return foundIndex;
}
public int searchContactName(String name){

    int foundIndex =-1;
    for (int i = 0; i < contacts.size(); i++){
        if (contacts.get(i).getName().equals(name)) { // here!
            foundIndex = i;
        }
    }

    return foundIndex;
}