我正在尝试创建一个简单的预订系统。我从输入中读取行,在完成项目之前,我将它们写入输出文件。
我的输入就像
ADDTRAIN,Cumhuriyet,Regional,80,90,50,40
ADDTRAIN,Baskent,Express,80,90,1,2
ADDTRAIN,Baskent,Express,80,90,50,40
如果一列火车与另一列火车同名,我必须写“命令失败...火车名称:...”
我用逗号将它们分开,然后为 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,Regional,80,90,50,40
ADDTRAIN,Baskent,Express,80,90,1,2
ADDTRAIN,Baskent,Express,80,90,50,40
ADDTRAIN,Cumhuriyet,Regional,80,90,50,40
我的程序不会将“命令失败”行写入输出。我该如何解决这个问题?
最佳答案
您应该使用HashMap
来存储您的数据:Key=TrainName,Value=TrainObject。使用 HashMap
提供了一种简单有效的方法来检查/禁止重复项
if(trainMap.contains(trainName){
System.out.println("错误-火车已经存在");
}
关于Java 输入/输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23288977/