public void menu()
int option=0;
Scanner b= new Scanner(System.in);
while (true){
System.out.println("Your options is:");
option=b.nextInt();
b.nextLine();
if(option==1)
add();
else ...
我在main中调用了函数add,它以它应该的方式获取输入值,但是当它再次出现时,一切都崩溃了。
> public void add(){
> int id;float grade; String name;
> Scanner z= new Scanner(System.in);
> //taking values for the 3 vars
> Student s= new Student(id,name,grade);
> c.addC(s);
> z.close();}
addC在Ctrl包中,看起来有点像这样
public void addC(Student s){
if(findById(s.getId()) != null)
{System.out.println("Err!Duplicate id!/n");
}else
if(s.getGrade()>10)
System.out.println("Err!Grade bigger than 10!/n");
else{
x.push(s);}
push()就在那里,因为我试图在堆栈上实现它。错误行是option=b.nextInt()
我觉得这是我的错,但作为一个java-starter我可以;我自己想出来,任何ideeas?
答案 0 :(得分:2)
问题是您在同一个流上使用两个扫描程序:System.in
。
另请参阅:How to use multiple Scanner objects on System.in?
编辑:是否可以重复使用第一台扫描仪?这样您就可以在适当的时间关闭扫描仪,而不是在第一次学生输入后关闭扫描仪。