问题描述
- Java 梭哈 编译出错怎么解决
- import java.util.*;
public class ShowHand
{
//定义该游戏最多支持多少个玩家
private final int PLAY_NUM = 5;
//定义扑克牌的所有花色和数值,
//下面四个是特殊字符,会在控制台打印出方块 草花 红心 黑桃
private String[] types = {""4 "" 5 "" 3 "" 6 ""};
private String[] values = {""2"" 3"" 4"" 5"" 6"" 7"" 8""
9""10"" J"" Q"" K"" A""};
//card是一局游戏中剩下的扑克牌
** private List cards = new LinkedList();**
//定义所有的玩家
private String[] players = new String[PLAY_NUM];//所有玩家手上的扑克牌
** private List[] playersCards = new List[PLAY_NUM];**
/**
* 初始化扑克牌,放入52张扑克牌,并且使用shuffle方法将它们按随机顺序排列
/
public void initCards()
{
for (int i = 0 ; i < types.length ; i++ )
{
for (int j = 0; j < values.length ; j++ )
{
cards.add(types[i] + values[j]);
}
}
//随机排列
Collections.shuffle(cards);
}
/*
* 初始化玩家为每个玩家分派用户名
/
public void initPlayer(String... names)
{
if (names.length > PLAY_NUM || names.length < 2)
{
//校验玩家数量,此处使用异常机制更合理
System.out.println(""玩家数量不对"");
return ;
}
else
{
//初始化玩家用户名
for (int i = 0; i < names.length ; i++ )
{
players[i] = names[i];
}
}
}
/*
* 初始化玩家手上的扑克牌,开始游戏时每个玩家手上的扑克牌为空,
* 程序使用一个长度为0的LinkedList来表示。
/
public void initPlayerCards()
{
for (int i = 0; i < players.length ; i++ )
{
if (players[i] != null && !players[i].equals(""""))
{
playersCards[i] = new LinkedList();
}
}
}
/*
* 输出全部扑克牌,该方法没有实际作用,仅用作测试
*/
public void showAllCards()
{
for (String card : cards )
{
System.out.println(card);
}
}/** * 派扑克牌 * @param first 最先派给谁 */public void deliverCard(String first){ //调用ArrayUtils工具类的search方法,查询出指定元素在数组中的索引 int firstPos = ArrayUitls.search(players first); //依次给位于该指定玩家之后的每个玩家派扑克牌 for (int i = firstPos; i < PLAY_NUM ; i ++) { if (players[i] != null) { playersCards[i].add(cards.get(0)); cards.remove(0); } } //依次给位于该指定玩家之前的每个玩家派扑克牌 for (int i = 0; i < firstPos ; i ++) { if (players[i] != null) { playersCards[i].add(cards.get(0)); cards.remove(0); } } }/** * 输出玩家手上的扑克牌 * 实现该方法时,应该控制每个玩家看不到别人的第一张牌,但此处没有增加该功能 */public void showPlayerCards(){ for (int i = 0; i < PLAY_NUM ; i++ ) { //当该玩家不为空时 if (players[i] != null) { //输出玩家 System.out.print(players[i] + "" : "" ); //遍历输出玩家手上的扑克牌 for (String card : playersCards[i]) { System.out.print(card + ""t""); } } System.out.print(""n""); }}public static void main(String[] args) { ShowHand sh = new ShowHand(); System.out.println(Arrays.toString(sh.types)); sh.initPlayer(""电脑玩家"" 孙悟空""); sh.initCards(); sh.initPlayerCards(); //下面测试所有扑克牌,没有实际作用 sh.showAllCards(); System.out.println(""---------------""); //下面从""孙悟空""开始派牌 sh.deliverCard(""孙悟空""); sh.showPlayerCards(); /* 这个地方需要增加处理: 1.牌面最大的玩家下注. 2.其他玩家是否跟注? 3.游戏是否只剩一个玩家?如果是,则他胜利了。 4.如果已经是最后一张扑克牌,则需要比较剩下玩家的牌面大小. */ //再次从""电脑玩家""开始派牌 sh.deliverCard(""电脑玩家""); sh.showPlayerCards();}
}
import java.util.*;
/**- Description:
- Copyright (C) 2005-2008 Yeeku.H.Lee
- This program is protected by copyright laws.
- Program Name:
- Date:
- @author Yeeku.H.Lee kongyeeku@163.com
- @version 1.0
/
public class ShowHand
{
//定义该游戏最多支持多少个玩家
private final int PLAY_NUM = 5;
//定义扑克牌的所有花色和数值,
//下面四个是特殊字符,会在控制台打印出方块 草花 红心 黑桃
private String[] types = {""4 "" 5 "" 3 "" 6 ""};
private String[] values = {""2"" 3"" 4"" 5"" 6"" 7"" 8""
9""10"" J"" Q"" K"" A""};
//card是一局游戏中剩下的扑克牌
private List cards = new LinkedList();
//定义所有的玩家
private String[] players = new String[PLAY_NUM];//所有玩家手上的扑克牌
*
private List[] playersCards = new List[PLAY_NUM];
/- 初始化扑克牌,放入52张扑克牌,并且使用shuffle方法将它们按随机顺序排列/public void initCards(){for (int i = 0 ; i < types.length ; i++ ){ for (int j = 0; j < values.length ; j++ ) { cards.add(types[i] + values[j]); }}//随机排列Collections.shuffle(cards);}/*
- 初始化玩家为每个玩家分派用户名/public void initPlayer(String... names){if (names.length > PLAY_NUM || names.length < 2){ //校验玩家数量,此处使用异常机制更合理 System.out.println(""玩家数量不对""); return ;}else{ //初始化玩家用户名 for (int i = 0; i < names.length ; i++ ) { players[i] = names[i]; }}}/*
- 初始化玩家手上的扑克牌,开始游戏时每个玩家手上的扑克牌为空,
- 程序使用一个长度为0的LinkedList来表示。/public void initPlayerCards(){for (int i = 0; i < players.length ; i++ ){ if (players[i] != null && !players[i].equals("""")) { playersCards[i] = new LinkedList(); }}}/*
- 输出全部扑克牌,该方法没有实际作用,仅用作测试*/public void showAllCards(){for (String card : cards ){ System.out.println(card);}}
/**
- 派扑克牌
- @param first 最先派给谁/public void deliverCard(String first){//调用ArrayUtils工具类的search方法,查询出指定元素在数组中的索引int firstPos = ArrayUitls.search(players first);//依次给位于该指定玩家之后的每个玩家派扑克牌for (int i = firstPos; i < PLAY_NUM ; i ++){ if (players[i] != null) { playersCards[i].add(cards.get(0)); cards.remove(0); }}//依次给位于该指定玩家之前的每个玩家派扑克牌for (int i = 0; i < firstPos ; i ++){ if (players[i] != null) { playersCards[i].add(cards.get(0)); cards.remove(0); }}
}/* - 输出玩家手上的扑克牌
- 实现该方法时,应该控制每个玩家看不到别人的第一张牌,但此处没有增加该功能*/public void showPlayerCards(){for (int i = 0; i < PLAY_NUM ; i++ ){ //当该玩家不为空时 if (players[i] != null) { //输出玩家 System.out.print(players[i] + "" : "" ); //遍历输出玩家手上的扑克牌 for (String card : playersCards[i]) { System.out.print(card + ""t""); } } System.out.print(""n"");}}
public static void main(String[] args)
{
ShowHand sh = new ShowHand();
System.out.println(Arrays.toString(sh.types));
sh.initPlayer(""电脑玩家"" 孙悟空"");
sh.initCards();
sh.initPlayerCards();
//下面测试所有扑克牌,没有实际作用
sh.showAllCards();
System.out.println(""---------------"");
//下面从""孙悟空""开始派牌
sh.deliverCard(""孙悟空"");
sh.showPlayerCards();
/*
这个地方需要增加处理:
1.牌面最大的玩家下注.
2.其他玩家是否跟注?
3.游戏是否只剩一个玩家?如果是,则他胜利了。
4.如果已经是最后一张扑克牌,则需要比较剩下玩家的牌面大小.
*/
//再次从""电脑玩家""开始派牌
sh.deliverCard(""电脑玩家"");
sh.showPlayerCards();
}
}
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。问题:
F:>javac ShowHand.java
ShowHand.java:22: expected
private List cards = new LinkedList();
^
ShowHand.java:26: expected
private List[] playersCards = new List[PLAY_NUM];
^
ShowHand.java:45: expected
public void initPlayer(String... names)
^
ShowHand.java:161: expected
}
^
4 errors
解决方案
你是否同时import了java.awt.*,类型冲突了,awt中也有一个List。