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

为什么,原因?

为什么,原因?

wshyzx 2016-08-03 17:56:27
public void createPlayer(){ System.out.println("-----------创建玩家...--------------------"); try { for(int i=1;i<3;i++){ System.out.println("请输入第"+i+"位玩家的ID和姓名:"); System.out.println("输入ID:"); Integer id=input.nextInt(); System.out.println("输入姓名:"); String name=input.next(); for (Player p : playerList) {//保证ID和姓名不重复。若重复,抛出异常 if(id.equals(p.id) || name.equals(p.name)) i=1/0; } Player player=new Player(id,name); playerList.add(player); } } catch (InputMismatchException e) { System.out.println("ID必须为数字!"); input.next(); createPlayer(); } catch (Exception e) { System.out.println("ID或姓名不能相同!"); //input.next();  //为什么这句不能留,而上面那句必须要? createPlayer(); } for(int i=0;i<2;i++) System.out.println("----欢迎玩家:"+playerList.get(i).name); }见catch块内,input.next();  //为什么这句不能留,而上面那句必须要?
查看完整描述

2 回答

已采纳
?
望远

TA贡献1017条经验 获得超1032个赞

catch (InputMismatchException e) {

            System.out.println("ID必须为数字!");

            input.next();

            createPlayer();

        } catch (Exception e) {

            System.out.println("ID或姓名不能相同!");

            //input.next();  

            createPlayer();

        }

因为第一个捕获的异常是输入不匹配异常,表示你输入的id不是整型,比如你输入id时输入student,捕获到异常,程序跳转到catch块,这个时候键盘输入的数据就需要一个input.next()来吸收掉原来的错误数据student防止数据影响,楼主可以试着打印第一的catch块中input.next()接收的内容,而第二个catch块就可以不用吸收数据。

查看完整回答
反对 回复 2016-08-04
?
剑术趋于化境

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

这个纸牌的程序我写过的,不过被我误删了。我学到现在脑子都糊了。你的问题回答不了,不过只有两个玩家,你就分别创建吧,player1,player2。建第二个玩家的时候做判断。

查看完整回答
反对 回复 2016-08-03
  • wshyzx
    wshyzx
    脑子糊了,哈哈
  • 剑术趋于化境
    剑术趋于化境
    我现在就是走马观花。看了后面,忘了前面。不过这个纸牌游戏确实用到了80%上课讲的内容,可惜被我删了,删项目的时候千万不要在那个复选框上打钩,那个意思是要从磁盘删除吗?打上勾就找不回来啦。我一开始把disk看成desk了,我一想,是不是提示只从桌面上删除,我就打了勾,冤枉!
  • 2 回答
  • 0 关注
  • 1463 浏览

添加回答

举报

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