我正在研究从.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;
关于如何尝试解决此问题的任何想法?如果可能的话,我想知道如何修复它,而不是解决方法,如果可能的话。