我的代码编译但无论我输入什么,正确与否都返回-1
public int search(String accountNumber){
int index = 0;
boolean found = false;
for (Account account : accounts )
while(index < accounts.size() && !found)
if (accounts.get(index).equals (accountNumber))
found = true;
else
index++;
if (found == true)
return index;
else
return -1;
}
}
基本上我是想从该指数位置返回账号,但我真的很难解决这个问题
编辑:我也不确定如何纠正这个以使其正常工作
/ ** 应使用指定的帐号删除帐户 作为参数,如果帐户存在。 然后应通过a返回适当的布尔值 方法结果对话框。 * /
public boolean removeAccount(String accountNumber)
{
int index = 0;
for(Account account : accounts)
{
if((account.getAccountNumber() == accountNumber) && index < accounts.size())
accounts.remove(account);
else
index++;
}
}
答案 0 :(得分:1)
是否覆盖了Account类中的equals
方法。否则它将无法工作。
因为您将帐户与字符串进行比较
if (found)
也足够if (found == true)
答案 1 :(得分:1)
您有两个主要问题:
Account
对象与String
对象进行比较,这可能不是您想要的对象以下是可能的解决方案:
选项#1:
for (Account account : accounts)
if (account.getNumber().equals(accountNumber))
return accounts.indexOf(account);
return -1;
选项#2:
int size = accounts.size();
for (int index=0; index<size; index++)
if (accounts.get(index).getNumber().equals(accountNumber))
return index;
return -1;
当然,您需要在课程public String getNumber()
中实施方法Account
。
答案 2 :(得分:0)
public int search(String accountNumber){
int index = 0;
for (Account account : accounts ){
if(account.getAccountNumber().equals(accountNumber))
return index;
else
index++;
}
return -1;
}
现在尝试这个我没有java设置,但这应该工作。 注意:在您的帐户类中写一个返回帐号的getter。
************************************解决方案第二个问题****** ***********************
public boolean removeAccount(String accountNumber)
{
for (Account account : accounts) {
if(account.getAccountNumber().equals(accountNumber))
return accounts.remove(account);
}
return false;
}
答案 3 :(得分:0)
您需要在Account类中使用getNum()方法。除非Account扩展String。 这应该正常工作并简化事情。
public int search(String accountNumber){
for(int i=0;i<accounts.size();i++){
if(accounts.get(i).getNum().equals(accountNumber))
return i;
}
return -1;
}
答案 4 :(得分:0)
试试这段代码:
public int search(String accountNumber){
int index = 0;
while(index < accounts.size()-1 && !Arrays.asList(accounts).contains(accountNumber)))
{
index++;
}
if (accounts.get(index).equals (accountNumber))
return index;
else
return -1;
}
}
你不需要迭代所有的arraylist,如果你发现它返回它的索引。
然后尝试编辑while条件。
答案 5 :(得分:0)
您可以尝试使用此代码。我没有写任何新代码,只是提炼了你的代码。
public int search(String accountNumber){
int index = 0;
boolean found = false;
for (Account account : accounts )
{
if(index < accounts.size() && !found)
if (accounts.get(index).equals (accountNumber))
{
found = true;
break;
}
else
index++;
}
if (found == true)
return index;
else
return -1;
}
}
答案 6 :(得分:0)
这应该可以试试..
public int search(String accountNumber)
{
int index = -1;
for(int i=0;i<accounts.size();i++)
{
if(accounts.get(i).getAccountNumber().equals(accountNumber))
{
index=i;
break;
}
}
return index;
}
我初始化索引为-1你也可以使用0而setter getter应该在Account for accountNumber变量中写为accounts.get(i).getAccountNumber()