没有什么是Printwriter输出(这是txt),为什么?

时间:2017-10-31 12:29:08

标签: java

我有一个输入txt文件,主要包含这样的字符串:

  
      
  1. GET:Mark Joseph Maria,1997,BB
  2.   
  3. REG:Lukacs Keto,1989
  4.   
  5. SET:Lkoaj Mento,2000"
  6.   

(数字不在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的菜鸟,很抱歉,如果有一个明显的错误,但这是我的功课,我希望你们能帮助我。

1 个答案:

答案 0 :(得分:2)

确保刷新并关闭PrintWritter。有时程序会在将更改发送到文件之前结束。

您的代码似乎没有任何问题,但我建议您进行一些改进:

替换:

String[] line = new String[2];
line = s.split(":");

使用:

String[] line = s.split(":");

因为split会返回一个新的String [],所以你对新String [2]的调用将被浪费。

我也认为你不想忽略错误后的行。所以你不应该在catch子句或默认子句上调用input.nextLine();