如果我没有为我的问题提供足够的背景信息,请提前原谅我。长期阅读,第一次提问。
我正在制作一个程序,其中有一个通过制表符分隔的 .txt 文件访问的汽车数据库(我们最近在我的编程课上做了类似的事情,所以我想扩展它)。
我的格式不是使用终端窗口,而是在 ArrayList 中显示 Car 对象(包含品牌、型号、年份、价格等)。我正在使用 JFrame、JList 和 ListModel,因为我使用的是 Car 对象数组。
在我的程序中,我想创建一个删除方法,用户可以在其中从数据库中删除项目。最初,他们会从 JList 中选择项目,然后单击删除按钮。这会调用 delete() 方法,即下图所示的选项卡...
void delete()
{
int i = list.getSelectedIndex();
String string = (String)listModel.getElementAt(i);
for(Car c : cars)
{
String year = String.valueOf(c.getYear());
String conditionReport = String.valueOf(c.getConditionReport());
String price = String.valueOf(c.getPrice());
if(c.getMake().indexOf(string) != -1 && c.getModel().indexOf(string) != -1 && year.indexOf(string) != -1 && conditionReport.indexOf(string) != -1 && price.indexOf(string) != -1 && c.getWarranty().indexOf(string) != -1 && c.getComments().indexOf(string) != -1)
{
int choice = JOptionPane.showConfirmDialog(null, "Are you sure you would like to remove the " + cars.get(i).getYear() + " " + cars.get(i).getMake() + " " + cars.get(i).getModel() + "?", "Choose One", JOptionPane.YES_NO_OPTION);
if(choice == JOptionPane.NO_OPTION || choice == JOptionPane.CLOSED_OPTION)
{
return;
} else
{
cars.remove(c);
listModel.removeElementAt(i);
}
}
}
writeFile();
}
我已经指出我的问题在 if 语句中。(我前后打印了一些东西,试图找到程序所在的位置。'list' 是我的 JList,'listmodel' 是我的默认列表模型。Car 是我创建的包含元素的对象(如 get 方法所示) ). listModel 中显示的元素只是显示 getMake()、getModel() 等的字符串...(每个“get”项之间用大约 10 个空格分隔。)
我在 if 语句中做错了什么?我认为 getMake() 和 getModel() (等等)将是所选索引的子字符串。
非常感谢您的帮助!任何有关我可以使进一步的问题更加具体和清晰的方法的意见将不胜感激!