Scanner nextLine跳过行

时间:2016-02-29 13:13:32

标签: java java.util.scanner

我正在研究从.txt文件中读取数据的java应用程序,扫描程序从.txt文件中读取每行数据,将其转换为对象,然后发送该对象到我正在phpMyAdmin上运行的数据库。但是我的扫描仪正在跳过.txt文件中的数据行。这会导致输入不匹配错误。

继承.txt文件中的数据:

12
Sylvia Plath
The bell jar
6.99
The Bell Jar
10.99
1

以下是从.txt文件

中读取数据的方法
private static void readBookFile(Scanner kb, BookModel bmodel) //this method will allow the user to create a book, it then returns that book object
    {
        kb = new Scanner(System.in);
        Print("Input File name:");
        String inputFile = kb.nextLine();
        File file = new File(inputFile + ".txt");

        try {
            Scanner input = new Scanner(file);
            while (input.hasNextLine()) {
                String line = input.next();

                createBook(input, bmodel);

            }
            input.close();
        } catch (FileNotFoundException ex) {
            System.out.println("No such file exists");

        }

    }

以下是将数据转换为对象的方法:

 public static void createBook(Scanner enter, BookModel bModel) {
        try {
           String xx = enter.nextLine();
            String an = enter.nextLine();
            Print(an);
            String ee = enter.nextLine();
            String bn = enter.nextLine();
            Print(bn);
            Double cp = enter.nextDouble();
            Print(cp);
            Double sp = enter.nextDouble();
            Print(sp);
            int pc = enter.nextInt();

            Book b = new Book(an, bn, cp, sp, pc);

            bModel.addBook(b);
        } catch (SQLException ex) {

        }
    }

我已经尝试添加一个空字符串来捕捉跳过但这仍然无济于事。这是我在这里遇到的错误,只是为了查看数据被跳过的位置:

  

=============================================== ======================
      1.从文本文件中读取书籍       2.删除书籍       3.添加产品类别
      4.编辑书籍       5.查看所有当前书籍的清单       6.产品菜单
      7.退出
      请使用键盘上的数字按选择选项       1
      你选择选项:1
      输入文件名:
      在
      西尔维亚普拉斯       6.99
      线程“main”中的异常java.util.InputMismatchException
        在java.util.Scanner.throwFor(Scanner.java:909)
        在java.util.Scanner.next(Scanner.java:1530)
        在java.util.Scanner.nextDouble(Scanner.java:2456)
        在retailcompanydatabase.Classes.Menu.createBook(Menu.java:138)
        在retailcompanydatabase.Classes.Menu.readBookFile(Menu.java:216)
        在retailcompanydatabase.Classes.Menu.Menu(Menu.java:54)
        在Main.Main.main(Main.java:12)

这是我正在添加的对象的实例变量,以供进一步参考:

 private int id;
 private double costPrice;
 private double sellPrice;
 private String authorName;
 private String bookName;
 private int productCategoryID;

关于如何尝试解决此问题的任何想法?如果可能的话,我想知道如何修复它,而不是解决方法,如果可能的话。

0 个答案:

没有答案