这是代码。
public class PokerGame
{
public static void main(String args[])
{
Scanner kb=new Scanner(System.in);
Scanner nkb=new Scanner(System.in);
Random r=new Random();
Double jackpot;
System.out.println("Enter the number of people playing");
int players=nkb.nextInt();
List<PokerPlayer> player;
PokerPlayer[] Playersstorage=new PokerPlayer[players];
List<String> Names=new ArrayList<String>();
List<Double> payin=new ArrayList<Double>();
List<Integer> deck;
player=new ArrayList<PokerPlayer>();
Boolean playersinit=true;
while(playersinit==true)
{
for(int x=0;x<players;x++)
{
System.out.println("Enter your name please, and then your pay in amount");
Names.add(kb.nextLine().toLowerCase());
payin.add(nkb.nextDouble());
}
System.out.print("\f");
playersinit=false;
}
Boolean playing=true;
while(playing==true)
{
deck=new ArrayList<Integer>(52);
final int decksize=52;
Boolean deckshuffled=true;
while(deckshuffled==true)
{
while(deck.size()<decksize)
{
Boolean selectRandom=true;
Integer currentRandom=0;
while(selectRandom==true)
{
Boolean comparecard=true;
currentRandom=r.nextInt(52)+1;
while(comparecard==true)
{
if(deck.contains(currentRandom))
{
comparecard=false;
}
else
{
selectRandom=false;
comparecard=false;
}
}
}
deck.add(currentRandom);
if(deck.size()==decksize)
{
deckshuffled=false;
}
}
}
boolean card_distributor=true;
while(card_distributor==true)
{
boolean playerstarter=true;
Integer o=deck.size()-1;
Integer pinit=0;
Integer ps=1;
while(playerstarter==true)
{
int[] mycards= new int[2];
mycards[0]=deck.get(o);
deck.remove(deck.size()-1);
int newdecksize=deck.size();
Playersstorage[pinit]=new PokerPlayer(Names.get(pinit),payin.get(pinit),mycards);
player.add(Playersstorage[pinit]);
pinit++;
o=deck.size()-1;
if(ps==players)
{
playerstarter=false;
playing=false;
card_distributor=false;
}
ps++;
}
}
Boolean playingCards=true;
List<Integer> dealerHand=new ArrayList<Integer>();
Integer dealing=deck.size()-1;
jackpot=0.00;
while(playingCards==true)
{
/*for(int x=0;x<3;x++)
{
dealerHand.add(deck.get(dealing));
deck.remove(dealing);
dealing=deck.size()-1;
}*/
try
{
Thread.sleep(1000/1);
}
catch(InterruptedException e)
{
e.printStackTrace();
}
System.out.println("What is your name?");
String name=kb.nextLine().toLowerCase();
boolean betting=true;
while(betting==true)
{
System.out.println("Enter your bet");
Integer bet=nkb.nextInt();
int indexofbet=Names.indexOf(name);
if(bet>player.get(indexofbet).getMoney())
{
System.out.println("You can not bet that much without selling your first born childs soul, would you like to do this?");
String sellchild=kb.nextLine();
if(sellchild.equalsIgnoreCase("yes"))
{
jackpot+=bet;
betting=false;
}
else
{
betting=true;
}
}
else
{
jackpot+=bet;
betting=false;
}
}
System.out.println(jackpot);
try
{
Thread.sleep(1000/1);
}
catch(InterruptedException e)
{
e.printStackTrace();
}
System.out.println("\f");
if(Names.contains(name))
{
Integer index=Names.indexOf(name);
System.out.println(player.get(index).getCards());
Boolean notfinished=true;
while(notfinished==true)
{
try
{
Thread.sleep(1000/1);
}
catch(InterruptedException e)
{
e.printStackTrace();
}
System.out.println("Are you finished looking at your cards "+name+"?");
String done=kb.nextLine();
if(done.equalsIgnoreCase("Yes"))
{
System.out.println("\f");
notfinished=false;
}
}
}
}
List<Integer> gameEnd=new ArrayList<Integer>();
List<Integer> comparison=new ArrayList<Integer>();
Boolean checkplayersscore=true;
while(checkplayersscore==true)
{
for(Integer x=0;x<players;x++)
{
if(player.get(x).getMoney()==0.00)
{
System.out.println(player.get(x).getMoney()+player.get(x).getName());
gameEnd.add(1);
}
else
{
System.out.println(player.get(x).getMoney()+player.get(x).getName());
gameEnd.add(2);
}
comparison.add(2);
}
Boolean continuecheck=true;
int checkover=1;
while(continuecheck==true)
{
if(gameEnd.contains(1))
{
Integer remove=gameEnd.indexOf(1);
gameEnd.remove(remove);
comparison.remove(remove);
Names.remove(remove);
payin.remove(remove);
player.remove(remove);
Playersstorage[remove]=null;
}
if(gameEnd.containsAll(comparison))
{
continuecheck=false;
checkplayersscore=false;
playing=false;
}
if(checkover==players)
{
continuecheck=false;
checkplayersscore=false;
}
if(player.size()==0)
{
continuecheck=false;
checkplayersscore=false;
playing=false;
}
checkover++;
}
}
}
}
}
public class PokerPlayer
{
private String name;
private Double money;
private Integer[] cards;
public PokerPlayer(String na,Double n,int[] card)
{
name = na;
money=n+0.00;
cards=new Integer[card.length];
cards[0]=card[0];
cards[1]=null;
}
public Integer BJScore(List<Integer> mycards)
{
/*unfinished code*/
}
public Integer[] getCards()
{
return cards;
}
public void setCards(int card)
{
for(int x=0;x<cards.length;x++)
if(cards[x]==null)
cards[1]=card;
}
public void setMoney(Double d)
{
money-=(d+0.00);
}
public Double getMoney()
{
return money;
}
public String getName()
{
return name;
}
}
我正在尝试为我的AP java类创建一个二十一点游戏,当我去获取并打印出你已经给出的卡片时,目前只有1张卡片存储在阵列的0索引中,并且在第二个索引(在构造函数类中设置)中为null,它向我发送[Ljava.lang.Integer; @ 72608760或其他一些数字变体(我假设它因每次调用时更改卡而变化)。有没有人知道它打印出来的原因而不是存储在整数数组中的实际值?
答案 0 :(得分:6)
这是因为数组对象没有有意义的toString()
方法,它们只使用toString()
中的默认Object
,它会输出类名和内存地址。更好地用它来打印数组:
System.out.println(Arrays.toString(array));
以下是文档的link,不要忘记导入Arrays
类,它位于包java.util
中。
答案 1 :(得分:2)
数组也是Java中的对象,但它们不会覆盖Object
的{{1}}方法。您看到的输出来自Object
's toString()
方法。引自toString()
的javadocs:
Object类的toString方法返回一个由。组成的字符串 对象是实例的类的名称,at-sign 字符“@”,以及散列的无符号十六进制表示 对象的代码。换句话说,此方法返回一个相等的字符串 价值:
getClass()。getName()+'@'+ Integer.toHexString(hashCode())
Object
部分负责getClass().getName()
部分,而hashCode(对象通常基于内存地址)负责最后更改的数值变化。
要获得所需的输出,您可以使用Arrays.toString()
传入数组。