Java ArrayList字符串输入
我有一个方法,在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; } }
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;
}