所以我正在读取文件中的信息并导致类型不匹配错误。我通过调试器运行它,但我不确定是什么导致它 - 因为它正在读取正确的数字(在这种情况下,2000)但它似乎并不认为它是一个整数?
我的代码如下:
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.println("Type In a Question here");
String q1 = scanner.nextLine();
System.out.println("Insert Answer here");
String a1 = scanner.nextLine();
LieDetector lieDetector = new LieDetector();
boolean truth = lieDetector.getRandomBoolean();
// do stuff...
}
它正在阅读这些信息:
2014年员工史密斯,John 2000
2015年推销员琼斯,比尔3000 100000
2014年执行布什,乔治5000 55
2014员工Mann,Sarah 4000
2015年推销员Marco,Jordan 5300 440000
2014年行政长矛,Tom 1000 60
2014年员工戈尔,Frank 7000
2015年推销员Madison,Michelle 8000 150000
2014年行政人员Berry,Ashley 7600 56
(为简单起见,我的错误就行:int monthlysalary = scan.nextInt();)
答案 0 :(得分:1)
问题是你想跳到下一行而不在某些行上完成令牌。例如
int monthlysalary = scan.nextInt();
导致:
2015 Salesman Jones, Bill 3000 100000
^
monthlysalary
然后int year = scan.nextInt();
导致:
2015 Salesman Jones, Bill 3000 100000
^
year
答案 1 :(得分:0)
经过一番头脑风暴后我设法弄明白了 - 问题来自于第一行之后有一条新线("技术上"它是一个回归)并且扫描正在读取在...中并且无法将其解析为整数,因此我为" \ r"添加了另一个分隔符。这让我把它读成整数,问题解决了!
答案 2 :(得分:0)
昨天讨论的类似问题here。我假设在this线程中讨论了根本原因。请查看以下更改:
public class JobSalaries {
public static void main(String[] args) throws Exception {
final int ARRAY_SIZE = 10;
Employee[] employees2014, employees2015;
int counter2014, counter2015;
File payroll;
payroll = new File("jobpayroll.txt");
employees2014 = new Employee[ARRAY_SIZE];
employees2015 = new Employee[ARRAY_SIZE];
Scanner scan = new Scanner(payroll).useDelimiter(",| ");
counter2014 = 0;
counter2015 = 0;
while(scan.hasNext()) {
int year = scan.nextInt();
String classification = scan.next();
String lname = scan.next();
String fname = scan.next();
// int monthlysalary = scan.nextInt();
int monthlysalary = Integer.parseInt(scan.nextLine());
if(year == 2014 && classification.equals("Employee")) {
String name = fname + " " + lname;
Employee tempemployee = new Employee(name,monthlysalary);
employees2014[counter2014] = tempemployee;
}
}
而不是使用scan.netxtInt()
尝试使用scan.nextLine()
并将其解析为整数。
答案 3 :(得分:0)
据我所知,您的代码存在两个问题。
InputMismatchError
,因为您未在useDelimiter
方法中添加换行符。将您的正则表达式更改为[,\n ]
,它将起作用。答案 4 :(得分:0)
这些是你可以做的事情来解决它
scan.nextLine();
(这会将扫描仪移至下一行,忽略该行上的其余令牌)。