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

為了賬號安全,請及時綁定郵箱和手機立即綁定
/*
*最后的練習題,寫完以后有兩個問題想問一下,請各位大俠指點迷津:
*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("程序執行結束!");

  }

}

正在回答

4 回答

建議將try...catch包裹整個while循環體,因為在第一次輸入數字時也可能出現錯誤

2 回復 有任何疑惑可以回復我~

你可以在System.out.println("出錯了!請輸入正確的圖書序號");這句話后加一句Book.main(args);就可以了

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

專業網絡愛好編程 提問者

可行,謝謝
2014-08-19 回復 有任何疑惑可以回復我~

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("程序執行結束!");
  }
}

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

百度了一下,找到第一個問題的解決辦法了。把對應的代碼改成一下代碼就可以了:

List<String> tempList = Arrays.asList(book);
    if(tempList.contains(name)){
     System.out.println( name+"這本書找到了");
     a=false;
    }else{
     System.out.println( "沒有找到這本書");
    }

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

舉報

0/150
提交
取消
Java入門第三季
  • 參與學習       409766    人
  • 解答問題       4543    個

Java中你必須懂得常用技能,不容錯過的精彩,快來加入吧

進入課程
微信客服

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

幫助反饋 APP下載

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

公眾號

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