这两期视频最后每次做项目都不成功,该重头看还是继续之后再回头?

来源:1-9 经验总结

昵称2_18位中英文

2016-11-03 12:08

视频一点点看过来的,每个小结的案例都跟着做,事后也能自己写出来。但是一到最后的小项目就蒙了,大体思路有但是小的细节实现老是出错。

第三期的图书系统,我参照上一期的租车,做个book类给每本书序号sn和书名name,结果不懂怎么把输入书名inputName与每个book对象的name做循环判断。

看着别人的代码整体仿写,结果tyr-catch的时候无论try里面是否有问题,都会顺序走到catch里面,哪里的问题啊。。。

package com.imooc.LoanDesk;

import java.util.InputMismatchException;
import java.util.Scanner;

public class LoanDesk {
	
	// Book[] b = {new Book(1,"数据结构"), new Book(2,"高等数学"), new Book(3,"Java核心1"), new Book(4,"Java核心2")};
	String[] book = {"数据结构", "高数", "Java核心技术卷一", "Java核心技术卷二"};
	
	// command()接受输入并返回1或2,不是整数抛出错误,不是1或2抛出错误
	public int command() throws Exception {
		
		int i;
		Scanner input = new Scanner(System.in);
		System.out.println("如何查找图书?1.按名称 2.按序号");
		try {
			i = input.nextInt();
		} catch (InputMismatchException e) {
			throw new InputMismatchException("请输入数字!程序结束!");
		}
		if ((i!=1) || (i!=2)) {
			throw new OtherException("请输入1或2!");
		}
		return i;
	}
	
	// searchName()接收先接受
	public void searchName() throws NoBookException {
		// Book a = new Book();
		System.out.print("请输入书名:");
		Scanner input = new Scanner(System.in);
		String name = input.nextLine();
		for (int i=0; i < book.length; i++) {
			if (name.equals(book[i])) {
				System.out.println("找到了!正在为《"+book[i]+"办理手续!");
				break;
			} 
			if (i == book.length) {
				throw new NoBookException("没有这本书。");
			}
		}
	}
	
	// searchSN()
	public void searchSN() throws NoBookException {
		Scanner input = new Scanner(System.in);
		int i = input.nextInt();
		if (i>0 && i<book.length) {
			System.out.println("找到了!正在为《"+book[i]+"》办理手续!");
		} else {
			throw new NoBookException("没有这么多书啊。。");
		}
	}
	
	// 主程序
	// 在while循环中,用command()询问并接受查找方式s
	// 询问并接收书名并调用searchName()获取结果or询问并接收序号并调用searchSN()获取结果
	public static void main(String[] args) {

		Scanner input = new Scanner(System.in);
		LoanDesk ld = new LoanDesk();
		int s = 0; 
		
		while (true) {
			try {s = ld.command();} catch (Exception e) {System.out.println("输入错误,但是详情显示不出来!");}
			switch (s) {
			case 1: try {
					ld.searchName();
				} catch (NoBookException e) {
					e.printStackTrace();
					System.out.println("通过此书名找不到");
				} break;
			case 2: try {
					ld.searchSN();
				} catch (NoBookException e) {
					e.printStackTrace();
					System.out.println("通过此序号找不到");
				} 
			}
		}
		
	}
}


写回答 关注

1回答

  • 慕虎0955569
    2016-11-03 13:05:10

    重新看,一定要扎实基础的!

    慕虎0955... 回复昵称2_18...

    哥,要不给我采纳一下,我需要积分

    2016-11-06 18:20:18

    共 5 条回复 >

Java入门第三季

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

409792 学习 · 4340 问题

查看课程

相似问题