如下代码加黑部分为什么自动赋值为0了,而没有提示输入?

583aef7c00019ffc05000269.jpg

583aef8000016e4e05000226.jpg


package rentbook;

import java.util.Scanner;

public class text {
   public  static Scanner scan=new Scanner(System.in);
   public  static book[] bo={
            new book("高数"),
            new book("物理"),
            new book("语文"),
            new book("英语"),
            new book("c语言")
    
    };
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
      while (true ){
          System.out.println("输入命令:1-按照名称查找图书;2-按照序号查找图书");
          int inputnum=inputnum1();
          switch(inputnum){
          case 1 : System.out.println("按照名称查找图书");
                   inputname();
                   break;
          case 2: System.out.println("按照序号查找图书");
                  System.out.println("请输入序号");
                      try{
                          int putnum=inputnum1();
                         System.out.println(bo[putnum-1]);
                      }catch(Exception e){
                          scan=new Scanner(System.in);
                          System.out.println("您输入的数字过大");
                      }
                      break;
          case -1 : System.out.println("请输入数字");break;
          default: System.out.println("输入的数字不存在");continue;
          }
      }
    }

    private static void inputname() {
        // TODO Auto-generated method stub
        System.out.println("请输入书名");
        String input=scan.nextLine();
        try{
            for(int i=0;i<bo.length;i++){
                if(input.equals(bo[i].name))
                System.out.println(bo[i].name);
            }
        }catch(Exception e){
            scan=new Scanner(System.in);
            System.out.println("请输入正确的书名");
        }
}

    private static int inputnum1() {
        // TODO Auto-generated method stub
        int a=scan.nextInt();
        try{
            return a;
        }catch(Exception e){
            scan=new Scanner(System.in);
            return -1;
        }
    }

}

qq_什么亡魂溺海没有跳海实在_03283094
浏览 1217回答 3
3回答

慕粉3291149

这种问题其实我也遇见过,你把String input = scan.nextLine(); 改成String input = scan.next(); 就可以了具体原因网上搜了也没搞太明白,大致是 nextLine()必须首先使用scan,否则的话一旦有过输入(你前面有过输入命令),再到这里进行nextLine()输入的话,程序就会直接停止运行

慕粉3291149

这是我自己理解的

不存在的记忆

你在main函数入口里没调用inputname()方法吧
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java