猿问

为什么在第一次询问的时候输入-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;
        }
    }

}



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

sntatas

你指的正常是不是程序能够重新输入,如果是这样的话,那应该不管输入什么都是无限循环的问题应该是while(true)导致无限循环,你没有写退出条件;switch里的break只退出switch

Caption_1210

目测问题出在while(true)的循环控制,手机上看有点费眼
随时随地看视频慕课网APP

相关分类

Java
我要回答