為什么跳不入rentway1()的catch中。
package com.imooc;
import java.util.Scanner;
public class library {
public static void main(String[] args) {
? ?library bo=new library();
? ?bo.book();
? ?}
?
public void book(){
System.out.println("歡迎來(lái)到圖書館借書系統(tǒng)!");
System.out.println("請(qǐng)輸入命令:1.按照名稱查找圖書。2.按照序列號(hào)查找圖書");
? ?try{
? ? Scanner k=new Scanner(System.in);
int one=k.nextInt();
? switch(one){
? ?case 1:
? ? ?rentway1();
? ? ?break;
? ?case 2:
? ? ?rentway2();
? ? ?break;
? ?default:
? ? System.out.println("你輸入的結(jié)果有誤");
? ??
? ?}
??
? ? ? ?}catch(Exception e){
? ? ? ?
? ? ? ? System.out.println("請(qǐng)輸入正確數(shù)值");
? ? ? ? book();
? ? ? ?}}
public void rentway1(){
String[] names={"數(shù)學(xué)","語(yǔ)文","英語(yǔ)","物理","化學(xué)","生物"};
System.out.println("歡迎來(lái)到圖書館名稱查找系統(tǒng)");
Scanner k1=new Scanner(System.in);
String two=k1.next();
try{
switch(two){
case"數(shù)學(xué)":
System.out.println("你的圖書已找到:"+two);
break;
case"語(yǔ)文":
System.out.println("你的圖書已找到:"+two);
break;
case"英語(yǔ)":
System.out.println("你的圖書已找到:"+two);
break;
case"化學(xué)":
System.out.println("你的圖書已找到:"+two);
break;
? ?case"物理":
System.out.println("你的圖書已找到:"+two);
break;
? ?case"生物":
System.out.println("你的圖書已找到:"+two);
break;
default:
System.out.println("你的圖書找不到");
?
?
}
}catch(RuntimeException e){
System.out.println("你輸入有誤!");
book();
}
}
public void rentway2(){
String[] names={"數(shù)學(xué)","語(yǔ)文","英語(yǔ)","物理","化學(xué)","生物"};
System.out.println("歡迎來(lái)到圖書館序列號(hào)查找系統(tǒng)");
try{
? Scanner k3=new Scanner(System.in);
? int three=k3.nextInt();
? System.out.println("你輸入的書籍為:"+names[three-1]);
??
? }catch(Exception e){
??
? System.out.println("你輸入有誤!");
? book();
? }
??
}
}
2016-07-27
好吧,我忘了java 1.7版本之后switch參數(shù)還支持String。。
你的rentway1方法的try塊中沒有產(chǎn)生異常,當(dāng)然捕獲不到啊。。
2016-07-27
switch語(yǔ)句的判斷條件可以接受int,byte,char,short,不能接受其他類型。。
2016-07-27
因?yàn)閺目刂婆_(tái)輸入的是字符,沒有什么異常可以捕獲
2016-07-27
我感覺 你可以catch(Exception e)試一下 ?