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

为什么在第一次询问的时候输入-1的时候程序正常 而输入字符却死循环?

为什么在第一次询问的时候输入-1的时候程序正常 而输入字符却死循环?

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();                          switch(putnum){                          case -1: System.out.println("请输入数字");break;                          default:System.out.println(bo[putnum-1]+"已经被您选中了");break;                          }                      }catch(Exception e){                          System.out.println("您输入的数字过大");                      }                      break;          case -1 : System.out.println("请输入数字");break;          default: System.out.println("输入的数字不存在");          }      }    }    private static void inputname() {        // TODO Auto-generated method stub        System.out.println("请输入书名");        String input=scan.next();                for(int i=0;i<bo.length;i++){                if(input.equals(bo[i].name))                System.out.println(bo[i].name+"已经被您选中了");                else if(i==bo.length-1){                    System.out.println("请输入正确的书名");                    break;                }                }    }    private static int inputnum1() {        // TODO Auto-generated method stub               try{            int a=scan.nextInt();            return a;        }catch(Exception e){              return -1;        }    }}
查看完整描述

2 回答

?
sntatas

TA贡献53条经验 获得超11个赞

你指的正常是不是程序能够重新输入,如果是这样的话,那应该不管输入什么都是无限循环的

问题应该是while(true)导致无限循环,你没有写退出条件;switch里的break只退出switch

查看完整回答
反对 回复 2016-11-30
?
Caption_1210

TA贡献9条经验 获得超3个赞

目测问题出在while(true)的循环控制,手机上看有点费眼
查看完整回答
反对 回复 2016-11-30
  • 2 回答
  • 0 关注
  • 1299 浏览

添加回答

举报

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