我有一个输入txt文件,主要包含如下字符串:
- GET:Mark Joseph Maria,1997,BB
- REG:Lukacs Keto,1989
- SET:Lkoaj Mento, 2000"
(数字不在txt中)(所以基本上“GET”后面有3个字符串(+“,”),其他只有2个)+有些数据不应该写入我的output.txt(这就是为什么我把它放在 try block 中)。
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菜鸟,如果有明显的错误,很抱歉,但这是我的作业,我希望你们能帮助我。
最佳答案
确保您的 PrintWritter 已冲洗并关闭。有时,程序在将更改发送到文件之前就结束了。
您的代码似乎没有任何问题,但我建议一些改进:
替换:
String[] line = new String[2];
line = s.split(":");
与:
String[] line = s.split(":");
因为 split 会返回一个新的 String[],所以你对 new String[2] 的调用将会被浪费。
我还认为您不想忽略错误后的行。因此,您不应在 catch 子句或默认子句上调用 input.nextLine();
。
关于java - Printwriter 输出(即 txt)没有任何内容,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47035447/