-1
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 我不能;我自己弄不明白,有什么想法吗?

4

1 回答 1

2

问题是您在同一流上使用了两个扫描仪:System.in.

另请参阅:如何在 System.in 上使用多个 Scanner 对象?

编辑:是否可以重复使用第一个扫描仪?这样您就可以在适当的时间关闭扫描仪,而不是在第一个学生输入之后。

于 2013-10-23T15:39:31.933 回答