继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

输入字符,便会无限循环运行下去,为何?

qq_勿语_1
关注TA
已关注
手记 3
粉丝 3
获赞 13

package jieshu;

import java.util.Scanner;

public class BookManger {
static Scanner scan=new Scanner(System.in);
public static void main(String[] args) {

    // TODO 自动生成的方法存根
    String book[]={"java","c语言","数据结构","操作系统","数据库","计算机网络"};//用来存储书名
    while(true)
    {
        System.out.println("请输入1:用书名查找书籍,2:用下标查找书籍");
        String book1;
        try{
        int in=input();
        switch(in)
        {
        case 1:book1=getbookbyname(book);
        System.out.println("找到的书籍为:"+book1);
        break;
        case 2:book1=getbookbynumber(book);
        System.out.println("找到的书籍为:"+book1);
        break;
        case -1:
        System.out.println("输入错误请重新输入数字!");
        continue;
        default:
        System.out.println("输入错误!");
        continue;
        }
    }
        catch(Exception e)
        {
            System.out.println(e.getMessage());
            continue;
        }

        }

    }

private static String getbookbyname(String[] book) throws Exception{
    // TODO 自动生成的方法存根
    System.out.println("请输入名字");
    String name=scan.next();
    for(int i=0;i<book.length;i++)
    {
        if(name.equals(book[i]))
            return book[i];
    }

     throw new Exception("图书不存在");
}

private static String getbookbynumber(String[] book) throws Exception{

    // TODO 自动生成的方法存根
    System.out.println("请输入下标");
    try{int index=scan.nextInt();
    for(int i=0;i<book.length;i++)
    {
        if(index==i)
        return book[index];
    }
    }
    catch(ArrayIndexOutOfBoundsException e)
    {
        Exception booknotexist=new Exception("图书不存在");
        booknotexist.initCause(e);
        throw booknotexist;
    }
    return null;
}

public static int input()
{
    try
    {
    int in=scan.nextInt();
    return in;
    }
    catch(Exception e)
    {
        System.out.println("请输入1或2的整数!");
        return -1;
    }

}

}

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP

热门评论

只要出现异常就一直continue,没有被打断,在System.out.println("输入错误!");后应该是用break;打断这次循环操作

刚看了作业参考,定义成全局的也行,但是你需要在catch中 重新初始化一遍 scan = new Scanner(System.in)

不要用全局scanner,改成每次调用的时候,重新初始化。如果你用全局的,后面调用的话,因为一开始初始化过,让你输入了。所以里面有值,直接跳过,进入死循环。

查看全部评论