其实还不太清楚是什么时候用异常处理,什么时候直接写用if条件判断处理掉?

来源:1-9 经验总结

sun_haha

2015-08-02 14:57

import java.util.*;

/**
 * 借书系统
 * @author ppcc
 *
 */
public class Library {
	/**
	 * 字符串数组存放图书信息
	 */
	String[] bookArr;
	
	/**
	 * 输入
	 */
	Scanner sc=new Scanner(System.in);
	
	/**
	 * 构造函数
	 */
	public Library(){
		//将图书信息存入数组
		bookArr=new String[]{"高数","数据结构","操作系统","C语言"};
	}
	
	/**
	 * 主菜单
	 */
	 public void menuMain(){
		//提示语句
		System.out.println("1-按名称查找图书\t2-按序号查找图书");
	    System.out.print("输入命令:");
		try{
			//用户输入选择菜单
			int sel=sc.nextInt();
			//选择按名称查找图书
			if(sel==1) searchByName();
			//按序号查找图书
	                else if(sel==2) searchById();
			//输入除1和2以外的数字
			else System.out.println("命令输入错误!请选择1或2");
		}catch(InputMismatchException e){
			//输入不是数字,提示出错
			System.out.println("命令输入错误!请根据提示输入数字命令");
		
		}finally{
			sc=new Scanner(System.in);
			//返回主界面
			System.out.println("");
			menuMain();
		}
	}

	/**
	 * 按序号查找图书子菜单
	 */
	private void searchById() {
		//提示语句
		System.out.print("输入图书序号:");
		try{
			//用户输入图书序号
			int id=sc.nextInt();
			//无异常输出图书
			System.out.println("Book:"+bookArr[id]);
		}catch(InputMismatchException e){
			//输入不为数字,提示出错
			System.out.println("命令输入错误!请根据提示输入数字命令!");
		}
		catch(ArrayIndexOutOfBoundsException e){
			//输入不存在的序号,提示结果
			System.out.println("不存在该图书!");
		}
	}
	
	/**
	 * 按名称查找图书子菜单
	 */
	private void searchByName() {
		//提示
		System.out.print("输入图书名称:");
		//查询到的书
		String findBook=null;
		//书名
		String name=sc.next();
		//for循环匹配是否存在这本书
		for(int i=0;i<bookArr.length;i++){
			//找到这本书
			if(bookArr[i].equals(name)){
				findBook=bookArr[i];
				break;
			}
		}
		//找不到书
		if(findBook==null) System.out.println("不存在该书");
		//输出找到的书信息
		else System.out.println("Book:"+findBook)	
	}
	
	/**
	 * 主函数
	 * @param args
	 */
	public static void main(String[] args) {
            Library library=new Library();
	        library.menuMain();
	}
}


写回答 关注

1回答

  • SylviaHuang
    2015-12-14 17:12:56

    java提供异常处理机制,在有可能会抛出异常的地方使用异常去处理,比如例程中当捕获到输入异常或者数组下标越界异常时,就需要去处理,无论是提示信息也好,还是进一步做业务处理,对于程序员来说,就能作为主动方直观地明白程序到底是怎么运行的,遇到了什么问题等等。而if判断常用于处理业务逻辑,而且最好是if else成对出现,使代码更加直观,也避免了漏掉某种可能出现的结果。

Java入门第三季

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

409792 学习 · 4340 问题

查看课程

相似问题