为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

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;        }    }}
查看完整描述

3 回答

已采纳
?
慕粉3291149

TA贡献71条经验 获得超52个赞

这种问题其实我也遇见过,你把String input = scan.nextLine(); 改成String input = scan.next(); 就可以了

具体原因网上搜了也没搞太明白,大致是 nextLine()必须首先使用scan,否则的话一旦有过输入(你前面有过输入命令),

再到这里进行nextLine()输入的话,程序就会直接停止运行

查看完整回答
1 反对 回复 2016-11-29
?
慕粉3291149

TA贡献71条经验 获得超52个赞

这是我自己理解的

查看完整回答
反对 回复 2016-11-29
?
不存在的记忆

TA贡献2条经验 获得超0个赞

你在main函数入口里没调用inputname()方法吧

查看完整回答
反对 回复 2016-11-28
  • 3 回答
  • 0 关注
  • 1216 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信