为了账号安全,请及时绑定邮箱和手机立即绑定
/*
*最后的练习题,写完以后有两个问题想问一下,请各位大侠指点迷津:
*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入门第三季
  • 参与学习       409787    人
  • 解答问题       4340    个

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

进入课程
意见反馈 帮助中心 APP下载
官方微信