Java 输入/输出

标签 java input output

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

我的输入就像

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/

相关文章:

java - 渲染 <h :panelGroup> by ajax in jsf

java - 为什么需要使用标记接口(interface)来序列化对象?

jquery - Javascript 风格的空输入框

java - 扫描仪给出相同的值 2x 而不是 1

webview 输入字段中的 Android 电子邮件友好键盘

Java输入文本而不是数字时出错

java - 从第一个 JFrame 调用的方法在第二个 JFrame 中不执行任何操作

java - 将 DefaultTableCellRenderer 中的 boolean 值的复选框替换为字符串

java - 发送电子邮件时如何在控制台上禁用 java 邮件跟踪

c# - 禁用 Topshelf 控制台输出