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

来源:1-9 经验总结

慕粉3631469

2017-09-19 13:35

http://img4.mukewang.com/59c0aba100019adf07240515.jpg

http://img4.mukewang.com/59c0aba20001b33107940540.jpg

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

写回答 关注

4回答

  • xianyinweijue
    2017-11-13 21:58:23
    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;
    		}
    	}
    	
    }

    这是我的程序

  • xianyinweijue
    2017-11-13 21:56:40

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

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

  • 慕粉3631469
    2017-09-19 17:08:18

    http://img4.mukewang.com/59c0de0b0001c00e12080845.jpg

    http://img4.mukewang.com/59c0de6d0001ff4c03920478.jpg

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

  • 雪枫3219033
    2017-09-19 14:53:25

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

    慕粉3631...

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

    2017-09-19 17:22:14

    共 1 条回复 >

Java入门第三季

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

409789 学习 · 4340 问题

查看课程

相似问题