为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

dantu163 2016-02-05 22:28:54
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-退出:录入命令非数字!
查看完整描述

6 回答

?
dantu163

TA贡献1条经验 获得超1个赞

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

查看完整回答
1 反对 回复 2016-02-13
?
慕码人2521115

TA贡献14条经验 获得超5个赞

因为你输入的字母,而非数字,程序会走进

```

catch(Exception e)

{

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

continue;

}

```这一段,continue后又重新回到while语句,和之前执行的相同的代码。

查看完整回答
反对 回复 2016-02-10
?
IMOOCER_Vi

TA贡献7条经验 获得超4个赞

不好意思,因为网络故障,连发三遍,刷屏了。。。。

查看完整回答
反对 回复 2016-02-06
  • 6 回答
  • 0 关注
  • 1912 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信