/* *最后的練習題,寫完以后有兩個問題想問一下,請各位大俠指點迷津: *1、用戶輸入的字符串如何實現與數組中成員匹配,我自己寫的這個代碼只能匹配數組中第一個成員(西游記) 2、捕獲異常以后,有沒有辦法讓程序繼續執行,即:提示catch中內容后再重新開始循環,而不是直接終止程序 */ import java.util.*; public class Book{ public static void main(String[] args){ String book[]={"西游記","紅樓夢","水滸傳","三國演義"}; Scanner putin =new Scanner(System.in); boolean a=true; /* * 思路一:建議循環,找到圖書跳出循環,未找到圖書繼續循環 * 思路二:通過兩個if語句實現兩種功能查找圖書 */ while(a==true){ System.out.println("輸入命令:1,按照書名查找圖書;2,按照序號查找圖書"); int xuanze=putin.nextInt(); if(xuanze==1||xuanze==2){ /* * 功能一,通過書名查找圖書 * 通過用戶輸入的字符串與數組中每個成員進行equals()方法對比,一旦對比成功跳出循環,對比失敗重復循環 * */ if(xuanze==1){ System.out.println("輸入圖書名稱"); String name=putin.next(); for(String x : book){ if(name.equals(x)) { System.out.println(name+"這本書找到了"); a=false; break; }else{ System.out.println("沒有這本書"); break;} } } /* * 功能一,通過序號查找圖書 * 如果輸入的序號在0和數組長度之間則輸入該圖書名字,否則重復循環 * 通過捕獲用戶輸入信息,檢查用戶是否輸入的為整數,如果輸入錯誤做出提示 * */ if(xuanze==2){ System.out.println("輸入圖書序號"); try{ int xuhao=putin.nextInt(); if(xuhao>=0&&xuhao<book.length){ System.out.println(book[xuhao]+"這本書找到了~"); break; }else{ System.out.println("沒有這本書");} } catch(InputMismatchException e){ System.out.println("出錯了!請輸入正確的圖書序號");} } }else{System.out.println("命令輸入錯誤,請按提示輸入正確數字");} } System.out.println("程序執行結束!"); } }

專業網絡愛好編程
2014-08-18
4 回答
舉報
0/150
提交
取消
2014-08-18
建議將try...catch包裹整個while循環體,因為在第一次輸入數字時也可能出現錯誤
2014-08-18
你可以在System.out.println("出錯了!請輸入正確的圖書序號");這句話后加一句Book.main(args);就可以了
2014-08-18
import java.util.*;
public class Book{
public static void main(String[] args){
String book[]={"西游記","紅樓夢","水滸傳","三國演義"};
Scanner putin =new Scanner(System.in);
boolean a=true;
/*
* 思路一:建議循環,找到圖書跳出循環,未找到圖書繼續循環
* 思路二:通過兩個if語句實現兩種功能查找圖書
*/
while(a==true){
System.out.println("輸入命令:1,按照書名查找圖書;2,按照序號查找圖書");
int xuanze=putin.nextInt();
if(xuanze==1||xuanze==2){
/*
* 功能一,通過書名查找圖書
* 通過用戶輸入的字符串與數組中每個成員進行equals()方法對比,一旦對比成功跳出循環,對比失敗重復循環
* */
if(xuanze==1){
System.out.println("輸入圖書名稱");
String name=putin.next();
//list這一段是百度得來的
List<String> tempList = Arrays.asList(book);
if(tempList.contains(name)){
System.out.println( name+"這本書找到了");
a=false;
}else{
System.out.println( "沒有找到這本書");
}
}
/*
* 功能一,通過序號查找圖書
* 如果輸入的序號在0和數組長度之間則輸入該圖書名字,否則重復循環
* 通過捕獲用戶輸入信息,檢查用戶是否輸入的為整數,如果輸入錯誤做出提示
* */
if(xuanze==2){
System.out.println("輸入圖書序號");
try{
int xuhao=putin.nextInt();
if(xuhao>=0&&xuhao<book.length){
System.out.println(book[xuhao]+"這本書找到了~");
break;
}else{
System.out.println("沒有這本書");}
}
catch(InputMismatchException e){
System.out.println("出錯了!請輸入正確的圖書序號");}
}
}else{System.out.println("命令輸入錯誤,請按提示輸入正確數字");}
}
System.out.println("程序執行結束!");
}
}
2014-08-18
百度了一下,找到第一個問題的解決辦法了。把對應的代碼改成一下代碼就可以了:
List<String> tempList = Arrays.asList(book);
if(tempList.contains(name)){
System.out.println( name+"這本書找到了");
a=false;
}else{
System.out.println( "沒有找到這本書");
}