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

在判断玩家ID中的问题、求大神

package com.joker.test;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Scanner;

import com.joker.entity.Player;
import com.joker.entity.Poker;

public class PokerGame {
	Map<Integer, Player> playerMap;
	List<Poker> pokerList;
	Scanner input;
	String[] type = { "黑桃", "红桃", "梅花", "方块" };
	String[] pointer = { "2", "3", "4", "5", "6", "7", "8", "9", "10", "J",
			"Q", "K", "A" };

	public PokerGame() {
		pokerList = new ArrayList<Poker>();
		input = new Scanner(System.in);

	}

	/**
	 * 创建扑克牌
	 * 
	 * @param args
	 */
	public void pokerAdd() {
		System.out.println("-------创建扑克牌-------");
		for (int i = 0; i < type.length; i++) {
			for (int j = 0; j < pointer.length; j++) {
				pokerList.add(new Poker(type[i], pointer[j]));
			}
		}
		System.out.println("-------扑克牌创建成功-------");
	}

	/**
	 * 遍历显示所有扑克牌
	 * 
	 * @param args
	 */
	public void pokerGet() {
		for (Iterator<Poker> it = pokerList.iterator(); it.hasNext();) {
			for (int i = 0; i < type.length; i++) {
				for (int j = 0; j < pointer.length; j++) {
					Poker poker = it.next();
					System.out
							.print(poker.getType() + poker.getPointer() + " ");
				}
				System.out.println();
			}
		}

	}

	/**
	 * 创建玩家
	 * 
	 * @param args
	 */
	public void playerAdd() {
		System.out.println("-------创建玩家-------");
		int i = 0;
		while (i < 2) {
			System.out.println("请输入玩家的ID:");
			int id;
			try {
				id = input.nextInt();
				Player playerID = playerMap.get(id);
				if (playerID == null) {
					System.out.println("请输入玩家的姓名:");
					String name = input.next();
					Player player = new Player(id, name);
					playerMap.put(id, player);
					System.out.println("成功创建玩家:" +playerMap.get(id).getName());
					System.out.println("--------------------");
					i++;
				} else {
					System.out.println("该ID已被占用~~");
					continue;
				}
			} catch (Exception e) {
				System.out.println("请输入整数类型ID!!");

				continue;
			}
		}
	}

	public static void main(String[] args) {
		PokerGame pg = new PokerGame();

		pg.pokerAdd();
		pg.pokerGet();
		pg.playerAdd();
	}

}

为什么我在try-catch语句中会出现死循环错误输出???求大神指导该怎么改??

http://img1.sycdn.imooc.com//55ee8da2000159bf05830444.jpg

正在回答

3 回答

Scanner 对象最好不要重复使用,在id=input.nextInt();上面新建一个Scanner对象就可以了,要放在try语句块中,我也遇到了这样的问题,就是这样解决的

0 回复 有任何疑惑可以回复我~
#1

码农_鑫森淼焱垚 提问者

非常感谢!
2015-09-13 回复 有任何疑惑可以回复我~
0 回复 有任何疑惑可以回复我~
#1

码农_鑫森淼焱垚 提问者

谢谢了、、已经找到解决办法了、是因为在构造方法中没有添加如下代码 public PokerGame() { pokerList = new ArrayList<Poker>(); playerMap = new HashMap<Integer, Player>(); }
2015-10-16 回复 有任何疑惑可以回复我~

在创建玩家方法中playerAdd() 的

id=input.nextInt();上面添加一句这个试试

Scanner input=new Scanner(System.in);

0 回复 有任何疑惑可以回复我~
#1

码农_鑫森淼焱垚 提问者

还是不行、、死循环这个问题解决了、但是在你输入错误之后再次输入正确的数字时还是判断错误~~~
2015-09-09 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

在判断玩家ID中的问题、求大神

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信