亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

求教啊。。不管怎樣,都是異常報出。不懂

package exception_test;
import java.util.*;//導入java工具
public class Test_Exception {


/*圖書查找程序:
?* 1.提示用戶輸入,分別按書名及圖書序號來查找圖書
?* 2.根據輸入信息進行適當的異常處理
?*/
?? ?public static void main(String[] args) {
?? ??? ?// TODO Auto-generated method stub
?? ??? ?show();
?? ??? ?
?? ??? ?
?? ?}
?? ?public static void books(String bookname){
?? ??? ?String[] book={"論語","高數","日語","英語","漢語"};
?? ??? ?
?? ??? ?try{
?? ??? ??? ?for(int i =0;i<book.length;i++){
?? ??? ??? ?if(book[i].equals(bookname)){
?? ??? ??? ??? ?System.out.println("book:"+book[i]);
?? ??? ??? ?}else {
?? ??? ??? ??? ?throw new Exception();
?? ??? ??? ?}
?? ??? ??? ?}
?? ??? ?}catch (Exception e){
?? ??? ??? ?e.printStackTrace();
?? ??? ??? ?System.out.println("您查詢的書名不存在: "+"\n" + "如有需要請重新選擇:");?? ?
?? ??? ??? ?show();
?? ??? ?}
?? ?}
?? ?public static void bookNum(int BookNum){
?? ??? ?String[] book={"論語","高數","日語","英語","漢語"};
?? ??? ?try{
?? ??? ??? ?int bookNum =0;
?? ??? ??? ?if(bookNum >0 && bookNum<book.length){
?? ??? ??? ??? ?System.out.println("book:"+book[bookNum-1]);
?? ??? ??? ?}else{
?? ??? ??? ??? ?throw new Exception();
?? ??? ??? ?}
?? ??? ?}catch(Exception e){
?? ??? ??? ?e.printStackTrace();
?? ??? ??? ?System.out.println("您查詢的書籍不存在: "+"\n" + "如有需要請重新選擇:");?? ?
?? ??? ??? ?show();
?? ??? ?}
?? ?}
?? ?public static void bookname(String name){
?? ??? ?Scanner input2 = new Scanner(System.in);
?? ??? ?try{
?? ??? ??? ?System.out.println("請輸入您所需的書名:");
?? ??? ??? ?String name1 =input2.next();
?? ??? ??? ?books(name1);
?? ??? ?}catch(Exception e){
?? ??? ??? ?e.printStackTrace();
?? ??? ??? ?System.out.println("請重新輸入書名:");
?? ??? ??? ?return;
?? ??? ?}
?? ?}
?? ??? ?
?? ?public static void booknum(int num){
?? ??? ?Scanner input3 = new Scanner(System.in);
?? ??? ?try{
?? ??? ??? ?System.out.println("請輸入您所需的書號:");
?? ??? ??? ?int n =input3.nextInt();
?? ??? ??? ?bookNum(n);
?? ??? ?}catch(Exception e){
?? ??? ??? ?e.printStackTrace();
?? ??? ??? ?System.out.println("請重新輸入書號:");
?? ??? ??? ?return;
?? ??? ?}
?? ?}
?? ?
?? ?public static void show(){
?? ??? ?System.out.println("歡迎您來到閱讀快樂吧:書名查詢請選1;序號查詢請選2");
?? ??? ?Scanner input =new Scanner(System.in);
?? ??? ?int Num =input.nextInt();
?? ??? ?try{
?? ??? ??? if(Num ==1){
?? ??? ??? ?bookname(null);
?? ??? ?? }else if (Num==2){
?? ??? ??? ?booknum(Num);
?? ??? ?? }else{
?? ??? ??? ?? throw new Exception();
?? ??? ?? }
?? ??? }catch(Exception e){
?? ??? ? System.out.println("您輸入的信息有誤,請重新輸入:");
?? ??? ? show();
?? ????? }
???? }

}

正在回答

2 回答

books(String bookname) 方法中

for(int i =0;i<book.length;i++){
?? ??? ??? ?if(book[i].equals(bookname)){
?? ??? ??? ??? ?System.out.println("book:"+book[i]);
?? ??? ??? ?}else {
?? ??? ??? ??? ?throw new Exception();
?? ??? ??? ?}
?? ??? ??? ?}

你這里遍歷了整個數組,所以即便你輸入了有的課程,循環依然會執行,那么必然會出現不相等的情況,從而執行??throw new Exception();


bookNum(int BookNum) 方法中

int bookNum =0;

if(bookNum >0 && bookNum<book.length) 沒有用形參BookNum,所以你輸入什么都會報錯

另外,你這異常使用的方式很奇葩!程序有很大的可優化空間。

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

ygKan 提問者

請問,怎么修改呢?初學者,不懂。請見諒。謝謝
2019-05-06 回復 有任何疑惑可以回復我~
#2

小遁哥 回復 ygKan 提問者

第一個問題找到后break退出循環 第二個問題使用行參去判斷 繼續學習,慢慢就會明白的。
2019-05-06 回復 有任何疑惑可以回復我~
#3

ygKan 提問者 回復 小遁哥

第一個使用break后,還是不可以。第二個問題,解決了。謝謝。
2019-05-06 回復 有任何疑惑可以回復我~

?public static void bookNum(int BookNum){
?? ??? ?String[] book={"論語","高數","日語","英語","漢語"};
?? ??? ?try{
?? ??? ??? ?int bookNum =0;
?? ??? ??? ?if(bookNum >0 && bookNum<book.length){
?? ??? ??? ??? ?System.out.println("book:"+book[bookNum-1]);
?? ??? ??? ?}else{
?? ??? ??? ??? ?throw new Exception();
?? ??? ??? ?}
?? ??? ?}catch(Exception e){
?? ??? ??? ?e.printStackTrace();
?? ??? ??? ?System.out.println("您查詢的書籍不存在: "+"\n" + "如有需要請重新選擇:");?? ?
?? ??? ??? ?show();
?? ??? ?}
?? ?}

System.out.println("book:"+book[bookNum-1]);這一行,你的bookNum=0,bookNum-1不就是-1了嗎?肯定報數組越界異常啊,另外你參數int BookNum也沒用上啊

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

ygKan 提問者

謝謝,這個問題解決了??墒?按書名遍歷時,有異常。不知道怎么解。。
2019-05-07 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

求教啊。。不管怎樣,都是異常報出。不懂

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號