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

怎么在第一行命令抛出异常后再从头开始执行程序?

http://img1.sycdn.imooc.com//59c0aba100019adf07240515.jpg

http://img1.sycdn.imooc.com//59c0aba20001b33107940540.jpg

在main方法的try块中当rt.order(i)抛出异常后,整个try块就停止执行了,直接开始catch异常,所以在try中用循环体重新执行第一行提示语应该是行不通的,那么应该怎样做到抛出异常后能够循环执行程序?

正在回答

4 回答

package com.imooc_third;
import java.util.Scanner;

public class java19 {
	public static void main(String[] args) {
		int a=1;
	do {
		int input1=new java19().yi();

		switch(input1) {
		case 1:
			String input2=new java19().name();
			switch(input2) {
				case "高数": System.out.println("book:高数");break;
				default : System.out.println("图书不存在!");continue;
				//这里有个很关键的知识点,continue是无法在switch中起作用的,所以
				//这里的continue是作用于do while的
			}
			break;
			
		case 2:			
			int input3=new java19().xuhao();
			switch(input3) {
			case 1: System.out.println("book:数据结构");break;
			default : System.out.println("图书不存在!");continue;
			}
			break;
			
		
		default:System.out.println("命令输入错误!请根据提示输入数字命令!");break;
		}
		break;
		
	}while(a==1);
	}
	
	
	public int yi() {
		try {
			System.out.println("输入命令:1-按照名称查找图书;2-按照序号查找图书");
			Scanner input = new Scanner(System.in);
			int input1=input.nextInt();
			return input1;
			
			}catch(Exception e) {
				return 0;
			}
	}
	
	public String name() {
		try {
			System.out.println("请输入图书名称:");
			Scanner input = new Scanner(System.in);
			String input2=input.next();
			return input2;
		}catch(Exception e){
			return "tushu";
		}
	}
	
	public int xuhao() {
		try {
			System.out.println("请输入图书序号:");
			Scanner input = new Scanner(System.in);
			int input3=input.nextInt();
			return input3;
		}catch(Exception e){
			return 0;
		}
	}
	
}

这是我的程序

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

抱着学习的心态来看看,在try块里没有返回值吗,能不能设置成返回值为1,这样在while里写成while(rentbook.start!=1)行吗

楼主能不能把代码贴下学习学习

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

http://img1.sycdn.imooc.com//59c0de0b0001c00e12080845.jpg

http://img1.sycdn.imooc.com//59c0de6d0001ff4c03920478.jpg

按照你的思路改了,还有一个小问题

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

我认为可以把try-catch块提出来放在一个方法里,然后当异常发生时再执行这个方法就可以了

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

慕粉3631469 提问者

按照你的思路改了,可以实现循环执行了但还有一个小问题。查找方式的命令和图书名称的命令必须都抛出异常才会在“book:书名”打印出后结束程序(和老师给的例子一样),但是如果只有一个命令抛出异常,另一个命令没有抛出异常,在“book:书名”打印出后还会循环执行。我大概明白问题出在哪,应该是main方法中while()对start()方法中返回值的判断的先后顺序的问题。我想在只要没有抛出异常,即只要打印出“book:书名”后就结束程序,应该怎么改?我没有什么思路。(PS:截图看楼下,我顺便把order的类型从int改成String了,不然输入字母的话系统就直接抛出输入类型不匹配的异常,结束程序了)
2017-09-19 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

怎么在第一行命令抛出异常后再从头开始执行程序?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信