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

麻烦大家帮我看看,LookupForName()这个函数里面的catch怎么没有作用呢?其他代码正常。

package com.borrow.books.system;

import java.util.*;


public class BorrowBooksSystem {

String[] books = new String[]{"语文","数学","英语","物理","化学","政治","历史"};


public static void main(String[] args) {

CheckForInput();

}

public static void CheckForInput(){

       BorrowBooksSystem borrowBooks = new BorrowBooksSystem();

       System.out.println("输入命令:1-按照名称查找图书;2-按照序号查找图书");

       Scanner scan = new Scanner(System.in);

       try{

     int input = scan.nextInt();

         if (input == 1){

          borrowBooks.LookupForName();

          }

          if(input == 2){

         borrowBooks.LookupForNumber();

          }else{

         System.out.println("错误命令!请重新输入!!");

         CheckForInput();

          }

      }catch(InputMismatchException e){

     System.out.println("错误命令!请重新输入!");  

      }finally{

      CheckForInput();   

       }

}

//按名称查找

public void LookupForName(){

System.out.println("输入图书名称:");

Scanner scan = new Scanner(System.in);

try{

    String input = scan.nextLine();

    for (int i = 0; i < books.length; i++){

    if (input.equals(books[i])){

           System.out.println("book:" + input);

    }

    }

}catch(Exception e){

System.out.println("图书不存在!");

}finally{

CheckForInput();

}

}

    

//按序号查找

public void LookupForNumber(){

System.out.println("输入图书序号:");

Scanner scan = new Scanner(System.in);

try{

     int input = scan.nextInt();

     System.out.println("book:" + books[input-1]);

}catch(ArrayIndexOutOfBoundsException e){

System.out.println("图书不存在!"); 

}catch(InputMismatchException e){

System.out.println("错误命令!请重新输入!");  

}finally{

CheckForInput();

}

}

}


正在回答

2 回答

//按名称查找

public void LookupForName(){

System.out.println("输入图书名称:");

Scanner scan = new Scanner(System.in);

try{

    String input = scan.nextLine();

    for (int i = 0; i < books.length; i++){

    if (input.equals(books[i])){

           System.out.println("book:" + input);

    }

    }

}catch(Exception e){

System.out.println("图书不存在!");

}finally{

CheckForInput();

}

}


没有抛出异常,catch无法捕捉,可以改写成这样:


//按名称查找

public void LookupForName(){

System.out.println("输入图书名称:");

Scanner scan = new Scanner(System.in);

  String bookName = scan.next();

  try{

  for (int i = 0; i < books.length; i++){

      if (bookName.equals(books[i])){

          System.out.println("book:" + bookName);

    }else{

  throw new Exception(bookName);

    }

    }

  }catch(Exception e){

  System.out.println("您输入的图书不存在");

  }finally{

  CheckForInput();

   }

  }


0 回复 有任何疑惑可以回复我~

String input = scan.nextLine();换成String input = scan.next();吧。

nextLine()不是什么好鸟,这厮估计是接收了System.out.println("输入图书名称:");这句话提供的回车。

一个是你可以使用print()试一下,再一个就是不换任何内容,打印一下input的字符串长度。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第三季
  • 参与学习       409787    人
  • 解答问题       4340    个

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

进入课程
意见反馈 帮助中心 APP下载
官方微信