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

总感觉哪里不对,谁帮忙看看

 

package com.book.borrow;
import java.util.Scanner;
public class BookLend {

 public static void main(String[] args) {
  // TODO 自动生成的方法存根
  String book[] = {"物理","地理","化学","音乐","体育"};
  Scanner input = new Scanner(System.in);
  int in1;
  String bookName;
  int bookNum;
  System.out.println("**********欢迎来到图书借阅系统**********");
  do{
   System.out.println("输入命令:1-按照名称查找图书;2-按照序号查找图书");
   in1 = input.nextInt();
   if(in1!=1&&in1!=2){
    System.out.println("命令输入错误!请根据提示输入数字命令!");
    continue;
   }
   
   if(in1==1){
    System.out.println("请输入图书名称:");
    bookName = input.next();
    try{
     for(String x:book) {
      if(bookName.equals(x)){
       System.out.println("book:"+bookName);
       break;
      }else{
       throw new BookException(bookName);
       
      }
     }
    }catch(BookException e){
     System.out.println("您输入的图书不存在!");
     in1=0;
     continue;
    }
   }
   
   if(in1==2){
    System.out.println("请输入图书序号:");
    bookNum = input.nextInt();
    try{
     if(bookNum>0&&bookNum<=book.length){
      System.out.println("book:"+book[bookNum-1]);
      break;
     }else{
      throw new BookException(bookNum);
     }
    }catch(BookException e){
     System.out.println("您输入的图书不存在!");
     in1=0;
     continue;
    }
   }
   
  }while(in1!=1&&in1!=2);
  
 }

}

正在回答

2 回答

代码错误:

5441d0850001fd9f03310368.jpg

1.根据上图原有代码,假定我输入图书名称bookName="音乐",

    代码第一次循环:x="物理",bookName.equals(x)返回false,执行了else中throw语句,catch捕获抛出的BookException异常,程序终止(错误)

下图是就现有代码修改(非最佳):

5441d70e0001254803680314.jpg

推荐:

5441d9cd000135c203700276.jpg

判断语句if(in2==2){statement}也有相似的错误,在此不再赘述。

另外出于效率来讲:

    main方法中do...while语句中判断条件应该直接是while(true)。因为假定我输入非1或2的数字判断语句if(in1!=1&&in1!=2){statement}中(in1!=1&&in1!=2)条件成立,statement执行了,continue跳到while(in1!=1&&in1!=2)做多了一次(in1!=1&&in1!=2)判断

    个人推荐:

        do{

            ...

            if(in1==1){

                statement;

                break;

            }else if(in2==2){
                statement;

                break;

            }else{

                statement;
                continue;

            }

         }while(true);

1 回复 有任何疑惑可以回复我~
#1

qq_安静_93 提问者

多谢,受教了
2014-10-18 回复 有任何疑惑可以回复我~

package com.book.borrow;

public class BookException extends Exception{
 public BookException(){
  
 }
 public BookException(String name){
  super(name);
 }
 public BookException(int num){
  System.out.println("图书不存在");
 }
 
}

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

举报

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