我正在尝试创建一个简单的预订系统。我从输入中读取行,在完成项目之前,我将它们写入输出文件。
我的输入就像
ADDTRAIN,Cumhuriyet,区域,80,90,50,40
ADDTRAIN,Baskent,Express,80,90,1,2
ADDTRAIN,Baskent,Express,80,90,50,40
如果一列火车与另一列火车具有相同的名称,我必须写“ Command Failed ... Train Name:....”。
我将它们拆分为逗号,然后为Train创建一个Arraylist。
File text = new File();
PrintWriter writer = new PrintWriter();
Scanner scnr = new Scanner(text);
while(scnr.hasNextLine()){
String line = scnr.nextLine();
String[] atts = line.split(",");
if(atts[0].equals("ADDTRAIN"))
{
train.add(new Train(atts[0],atts[1],atts[2],atts[3],atts[4],atts[5],atts[6]));
}
for(int i= 1; i<train.size(); i++)
{
writer.print(train.get(i-1).Writer());
if(train.get(i).getTrainName().equals(train.get(i-1).getTrainName()))
{
writer.print(train.get(i).WrongWriter());
}
}
scnr.close();
writer.close();
我只能检查上一行。例如,如果我的输入像
ADDTRAIN,Cumhuriyet,区域,80,90,50,40
ADDTRAIN,Baskent,Express,80,90,1,2
ADDTRAIN,Baskent,Express,80,90,50,40
ADDTRAIN,Cumhuriyet,区域,80,90,50,40
我的程序没有写“命令失败”行来输出。我怎么解决这个问题?
最佳答案
您应该使用HashMap
来存储数据:Key = TrainName,Value = TrainObject。使用HashMap
提供了一种简单有效的方法来检查/禁止重复项if(trainMap.contains(trainName){ System.out.println("Error - train already exists");}