我试图将值放入类型为假日的数组中,但是我得到了错误 当我把值放在索引i变为1时(在for循环中)。
这是将值接收到构造函数中的正确方法吗?
我得到的错误:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at ExamQ1.main.main(main.java:13)
主要:
import java.util.Scanner;
public class main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
Holiday[] h = new Holiday[4];
for (int i = 0; i < h.length; i++) {
System.out.println(i);
h[i] = new Holiday(in.nextLine(), in.nextLine(), in.nextInt());
}
}
}
班级:
public class Holiday {
private String name;
private String hebrewMonth;
private int vacationDays;
public Holiday(String name, String hebrewMonth, int vacationDays) {
this.name = name;
this.hebrewMonth = hebrewMonth;
this.setVacationDays(vacationDays);
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void sethebrewMonth(String hebrewMonth) {
this.hebrewMonth = hebrewMonth;
}
public String getHebrewMonth() {
return this.hebrewMonth;
}
public void setVacationDays(int vacationDays) {
this.vacationDays = vacationDays;
}
public int getVacationDays() {
return this.vacationDays;
}
public String toString() {
String str = "name: " + this.name + ",hebrew Month: "
+ this.hebrewMonth + ",vaction days: " + this.vacationDays;
return str;
}
}
感谢&#39; S
答案 0 :(得分:1)
在使用next()
消耗剩余的未读字符后,请不要忘记使用nextInt()
。
for (int i = 0; i < h.length; i++) {
System.out.println(i);
h[i] = new Holiday(in.nextLine(), in.nextLine(), in.nextInt());
in.next();
}
这是您的参赛作品
aaa bbb 1 ccc vvv
如果您不使用in.next()
,则会发生这种情况:
LOOP 1 :
in.nextLine() -> aaa
in.nextLine() -> bbb
in.nextInt() -> 1
//This looks OK.
LOOP 2 :
in.nextLine() -> **UNREAD CHARACTER LEFT AFTER in.nextInt()**
in.nextLine() -> ccc
in.nextInt() -> vvv **INPUT MISMATCH BECAUSE IT IS NOT AN INT**
答案 1 :(得分:1)
只需使用in.next()
代替in.nextLine()
。
点击here查看差异。