用了continue后录入字母时出现死循环

package com.imooc;

import java.util.*;

public class BorrowBooks {

public static void main(String[] args) {

Book [] books={ new Book(1,"英语"),

            new Book(2,"语文"),

            new Book(3,"数学"),

            new Book(4,"物理"),

            new Book(5,"佛堂")

          };

int cmd=0;

int serialno=0;

String name;

int i=0;

Scanner sc=new Scanner(System.in);

while (true)

{

try

{

System.out.println("输入命令:1-按序号查询,2-按名称查询,0-退出:");

cmd=sc.nextInt();

if ( cmd==0 ) break;

catch(Exception e)

{

System.out.println("录入命令非数字!");

continue;

}

switch(cmd)

{

case 1:

System.out.println("输入图书序号:");

serialno=sc.nextInt();

for ( i=0; i<books.length; i++)

{

if ( books[i].serialno==serialno )

{

System.out.println("图书:"+serialno+" "+books[i].name);

break;

}

}

if ( i>= books.length ) System.out.println("无此图书!");

break;

case 2:

System.out.println("输入图书名称:");

name=sc.next();

for ( i=0; i<books.length; i++)

{

if ( books[i].name.equals(name) )

{

System.out.println("图书:"+books[i].serialno+" "+name);

break;

}

}

if ( i>= books.length ) System.out.println("无此图书!");

break;

}

}

}

}

执行现象如下:

输入命令:1-按序号查询,2-按名称查询,0-退出:

A

输入命令:1-按序号查询,2-按名称查询,0-退出:

录入命令非数字!

输入命令:1-按序号查询,2-按名称查询,0-退出:

录入命令非数字!

输入命令:1-按序号查询,2-按名称查询,0-退出:

录入命令非数字!


dantu163
浏览 1920回答 6
6回答

dantu163

Scanner不会自动跳过非法字符,在try-catch中增加一行: sc.next(); 就可以了。

慕码人2521115

因为你输入的字母,而非数字,程序会走进```catch(Exception e){System.out.println("录入命令非数字!");continue;}```这一段,continue后又重新回到while语句,和之前执行的相同的代码。

IMOOCER_Vi

不好意思,因为网络故障,连发三遍,刷屏了。。。。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java