无法使Java扫描程序模式正确

时间:2016-03-04 01:38:26

标签: java io

NumberOfBankAccounts,银行名称,余额,交易名称,类别,成本以及所述帐户名称中每笔交易的最后3次重复,直到所有交易都已读取并且到达空行(当前帐户数据结束)和新帐户从下一行开始。他们都是自己的,但不会让我在堆栈上显示这一点。我正在保存每个帐户,在我所说的列表中的所述帐户之间有一个空格,我无法检测到该空间,因此它可以在循环启动新帐户时突破事务处理器。这是我的代码:

private void loadFile(File save) throws FileNotFoundException {
    Scanner scanner = new Scanner(save);
    int accnumber = Integer.parseInt(scanner.next());
    System.out.println(accnumber);
    for(int i = 0;i<=accnumber;i++){






        Account a  = new Account();

            a.setName(scanner.next());
            System.out.println(a.getName());
            a.setTotal(Double.parseDouble(scanner.next()));
            System.out.println(a.getTotal());
            while(scanner.hasNext()) {
                Transaction t = new Transaction();

                t.setCategory(scanner.next());
                System.out.println(t.getCategory());
                t.setDescription(scanner.next());
                System.out.println(t.getDescription()+" Description");
                t.setAmount(Double.parseDouble(scanner.next()));
                System.out.println(t.getAmount());
                a.TRANSACTION_LIST.add(t);
                if (scanner.nextLine().isEmpty()) {
                System.out.println("BREAKING");
                  break;
                }


        }



            AccountData.ACCOUNT_LIST.add(a);
            System.out.println(AccountData.ACCOUNT_LIST.size());


    }

它继续偏离错误的行并试图从实际的单词中解析一个数字,因为它偏离中心并且我相信它是因为它们之间的线并且没有突破它的while循环。请帮帮我?

1 个答案:

答案 0 :(得分:0)

你的问题在这里:

       if (scanner.nextLine().isEmpty()) {
            System.out.println("BREAKING");
              break;
         }

你正在吃下一行只是为了检查它是否为空。如果它现在没有丢失该行并使扫描仪前进。你应该在循环的开头有这个块,并首先将行的值赋给变量,这样值就不会丢失。

尝试将while循环更改为以下内容:

String line = null;
while(!(line = keyboard.nextLine()).isEmpty()) {