我正在尝试创建一个简单的预订系统。我从输入中读取行,在完成项目之前,我将它们写入输出文件。

我的输入就像


  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");}

10-08 13:18