我有一个输入txt文件,主要包含这样的字符串:
- GET:Mark Joseph Maria,1997,BB
- REG:Lukacs Keto,1989
- SET:Lkoaj Mento,2000"
醇>
(数字不在txt中)(所以基本上" GET"有3个字符串(+",")之后,其他只有2)+有不应该写入我的output.txt的数据(这就是为什么我把它放在try块中)。
Scanner input = new Scanner(new File(inputFileName));
while (input.hasNextLine()){
try {
String s = input.nextLine();
String[] line = new String[2];
line = s.split(":");
String[] adatok = line [1].split(",");
switch(line [0]){
case "REG":
insertCustomer(adatok[0], Integer.parseInt(adatok[1]), adatok[2]);
break;
case "GET":
withdrawCash(adatok[0], Integer.parseInt(adatok[1]));
break;
case "PUT":
depositCash(adatok[0], Integer.parseInt(adatok[1]));
break;
default:
input.nextLine();
break;
}
} catch (Exception e){
input.nextLine();
}
}
你看到方法(insertCustomer,withdrawCash,depositCash)执行"写入output.txt"事情,但我认为问题在这里(我测试了方法,我认为它们很好)。 有人能看出我错在哪里吗?我是Java的菜鸟,很抱歉,如果有一个明显的错误,但这是我的功课,我希望你们能帮助我。
答案 0 :(得分:2)
确保刷新并关闭PrintWritter。有时程序会在将更改发送到文件之前结束。
您的代码似乎没有任何问题,但我建议您进行一些改进:
替换:
String[] line = new String[2];
line = s.split(":");
使用:
String[] line = s.split(":");
因为split会返回一个新的String [],所以你对新String [2]的调用将被浪费。
我也认为你不想忽略错误后的行。所以你不应该在catch子句或默认子句上调用input.nextLine();
。