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

来源:7-1 简易扑克牌游戏

码农_鑫森淼焱垚

2015-09-08 15:27

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://img.mukewang.com/55ee8da2000159bf05830444.jpg

写回答 关注

3回答

  • 武庚_Rehan
    2015-09-13 10:25:09
    已采纳

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

    码农_鑫森淼...

    非常感谢!

    2015-09-13 10:46:14

    共 1 条回复 >

  • illssyy
    2015-10-16 11:09:18

    码农_鑫森淼...

    谢谢了、、已经找到解决办法了、是因为在构造方法中没有添加如下代码 public PokerGame() { pokerList = new ArrayList<Poker>(); playerMap = new HashMap<Integer, Player>(); }

    2015-10-16 11:36:43

    共 1 条回复 >

  • 摇个头
    2015-09-08 20:37:44

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

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

    Scanner input=new Scanner(System.in);

    码农_鑫森淼...

    还是不行、、死循环这个问题解决了、但是在你输入错误之后再次输入正确的数字时还是判断错误~~~

    2015-09-09 14:46:25

    共 1 条回复 >

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题