java - Printwriter 输出(即 txt)没有任何内容,为什么?

标签 java

我有一个输入txt文件,主要包含如下字符串:

  1. GET:Mark Joseph Maria,1997,BB
  2. REG:Lukacs Keto,1989
  3. 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/

相关文章:

java - 如何将 double 四舍五入到小数点后一位?

Java 应用程序未在 OS X Yosemite 上运行

java - 对命名组使用 OR 运算符

java - 正则表达式将名字/姓氏与可选标题相匹配

java - 方法返回后做一些事情

java - 是否可以覆盖 IntelliJ IDEA 在将构建委托(delegate)给 gradle 时选择运行的 gradle 任务?

java - 单例类

java - 像 JTable 单元格编辑器一样使用 JSpinner

java - Map reduce作业执行但不产生输出

java - 我的 java 类验证不起作用,为什么?