我的程序要求能够从电话簿中删除姓名和号码。我已经删除工作,但它只删除文本框对应的ArrayList索引。我需要能够通过将它们输入到texbox中来删除其各自的arraylists中的名称和号码。对不起,如果有另一个答案,我想我真的不知道如何正确地说出来。我的代码如下。
ArrayList<String> Names = new ArrayList<String>();
ArrayList<String> Numbers = new ArrayList<String>();
if(e.getSource() == DeleteBtn)
{
if (NameTxt.getText() != null)
{
for( int i=0; i<= NamesList.size(); i++)
{
if(NamesList.contains(NameTxt.getText()))
{
NamesList.remove(i);
System.out.println(NamesList.size());
}
}
}
if (PhoneTxt.getText() != null)
{
for( int i=0; i<= NumbersList.size(); i++)
{
if(NumbersList.contains(PhoneTxt.getText()))
{
NumbersList.remove(i);
System.out.println(NumbersList.size());
}
}
}
}
答案 0 :(得分:2)
如果您必须使用ArrayLists,那么您可以考虑使用对的ArrayList。 您可以创建自己的类,比如PhoneBookEntry。
class PhoneBookEntry {
String _name;
String _phone;
// etc...
}
ArrayList<PhoneBookEntry>
答案 1 :(得分:1)
考虑使用HashMap而不是ArrayLists。
HashMap<String, String> numbersAndNames = new HashMap<String, String>();
numbersAndNames.put("John", "123 456 789");
答案 2 :(得分:0)
如果我是你,我会重新考虑我的逻辑。我会尽量避免为你发布代码,以免给你答案/为你做工作但是......
我只看到你修改了NamesList变量。您没有修改Names或Numbers ArrayList变量。
我会把你的'包含if语句'放在其他地方。您检查NameList是否包含NameText很多次。我不明白为什么你需要多次检查它。
如果你想变得聪明,你可以完全取消数组,只需使用getIndex()方法在java中产生一些效果......它获取对应于NameText的索引(我很模糊故意,所以想想我在说什么。
如果需要,可以使用HashMap,但这不是必需的。
答案 3 :(得分:0)
建议使用其他类来跟踪名称/数字组合。
ArrayList contacts = new ArrayList();
if(e.getSource() == DeleteBtn) {
if (NameTxt.getText() != null) {
for( int i=0; i<= contacts.size(); i++) {
if(contacts.getName().contains(NameTxt.getText())) {
contacts.remove(i);
System.out.println(contacts.size());
}
}
}
public class PhoneContact {
private String name;
private String number;
/*
Getters and Setters
*/
}
答案 4 :(得分:0)
首先,NumbersList.contains(PhoneTxt.getText())
会在列表中PhoneTxt.getText()
时返回。
您想要检查的是NumbersList.get(i).equals(PhoneTxt.getText())
注释,我使用的是equals()
而不是==
运营商
答案 5 :(得分:0)
我的朋友实际上找到了答案,他只是添加了另一个ArrayList(i),感谢所有发布答案的人,因为他们给了我深思熟虑,只是觉得答案的逻辑不起作用但我被证明了错了,这是任何有兴趣的人的代码。
if(e.getSource() == DeleteBtn)
{
if (NameTxt.getText() != null)
{
for( int i=0; i<= NamesList.size(); i++)
{
if(NamesList.contains(NameTxt.getText()))
{
NamesList.remove(i);
NamesList.remove(i);
System.out.println(NamesList.size());
System.out.println(NumbersList.size());
}
}
}
if (PhoneTxt.getText() != null)
{
for( int i=0; i<= NumbersList.size(); i++)
{
if(NumbersList.contains(PhoneTxt.getText()))
{
NumbersList.remove(i);
NamesList.remove(i);
System.out.println(NamesList.size());
System.out.println(NumbersList.size());
}
}
}
}