我正在尝试建立一个简单的预订系统。我从输入中读取行,在完成项目之前将它们写入输出文件。
我的输入就像
ADDTRAIN,Cumhuriyet,区域,80,90,50,40 ADDTRAIN,Baskent,Express,80,90,1 ADDTRAIN,Baskent,Express,80,90,50,40
如果一列火车和另一列火车同名,我必须写“命令失败.列车名称:.”
我用逗号将它们分开,然后为列车创建一个数组列表。
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 ADDTRAIN,Baskent,Express,80,90,50,40 ADDTRAIN,Cumhuriyet,区域,80,90,50,40
我的程序没有写一个“命令失败”行输出。我该如何解决这个问题?
发布于 2014-04-25 09:21:01
您应该使用HashMap来存储数据: Key=TrainName,Value=TrainObject。使用HashMap既简单又有效地检查/不允许重复
if(trainMap.contains(trainName){ System.out.println("Error - train already exists"); }
发布于 2014-04-25 09:30:03
如果您不想使用HashMap (这是一个很好的解决方案),可以使用两个循环。
for(int i = 0; i<train.size(); i++)
{
writer.print(train.get(i).Writer());
for(int j = 0; j<train.size(); ++j)
{
if (i==j) continue;
if(train.get(i).getTrainName().equals(train.get(j).getTrainName()))
{
writer.print(train.get(i).WrongWriter());
break;
}
}
}https://stackoverflow.com/questions/23288977
复制相似问题