java 异常练习题_java入门异常处理练习题问题

大概方式:

1、判断用户输入的类型是否正确,不正确捕获异常,把他包装成我自己定义的异常

2、判断用户输入的数是多少

2.1、如果是1,则打印“输入图书名称”,用户输入,定义一个Book类型的数组,然后遍历,定义一个计数器count,如果用户输入的值等于数组遍历的值(书的名字不能重复,此处有错误,因为如果名字重复的话,输入名字应该同时出现重复的书名和不同的书号(自动默认书号是不能重复的)),计数器加1,这里如果计数器不等于1的话(有两个原因:(1)大于1:可能是出现了重复的书名 (2)等于0:可能是不存在这本书 (3)小于0:不知道了。。。),但是我这边是不管是哪种原因,我都是用的“图书不存在”这个异常,所以也有问题

2.2、如果是2:同上

整个有点混乱,还有好多问题

1、

package com.library;

public class Book {

private String bookName;

private int lNum;

public Book() {

super();

// TODO Auto-generated constructor stub

}

public Book(String bookName, int num) {

super();

this.bookName = bookName;

lNum = num;

}

public String getBookName() {

return bookName;

}

public int getLNum() {

return lNum;

}

}

2、

package com.library;

public class MyException extends Exception{

public MyException(){

}

public MyException(String message){

super(message);

}

}

3、

package com.library;

import java.util.Scanner;

public class TestLibrary {

private static TestLibrary tl;

public static void main(String[] args) {

tl = new TestLibrary();

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

try {

tl.test2();

} catch (MyException e) {

// TODO Auto-generated catch block

e.printStackTrace();

for(int i = 1; i != 0; i++){

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

try {

tl.test2();

} catch (MyException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

}

}

}

public void test2() throws MyException{

Book book1 = new Book("数据结构",1);

Book book2 = new Book("高数",2);

//Book book3 = new Book("高数",3);

Book[] library = {book1,book2};

try {

Scanner s = new Scanner(System.in);

Integer input = s.nextInt();

if((input instanceof Integer) == true){

if(input.equals(1)){

int count = 0;

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

Scanner s1 = new Scanner(System.in);

String bookName = s1.nextLine();

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

if(bookName.equals(library[i].getBookName())){

System.out.println("book:" + library[i].getBookName());

count++;

//System.out.println(count+"...");

}

}

if(count != 1){

tl.test4();

}

}else if(input.equals(2)){

int count = 0;

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

Scanner s2 = new Scanner(System.in);

int lNum = s2.nextInt();

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

if(lNum == (library[i].getLNum())){

System.out.println("book:" + library[i].getBookName());

count++;

}

}

if(count != 1){

tl.test4();

}

}

}

} catch (Exception e){

MyException exception = new MyException("命令输入错误!请根据提示输入数字命令");

exception.initCause(e);

throw exception;

}

}

// public void test1() throws MyException {

//

// throw new MyException("命令输入错误!请根据提示输入数字命令");

// }

public void test3() throws MyException{

throw new MyException("图书不存在");

}

public void test4(){

try {

test3();

} catch (MyException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值