当我尝试打印出一个Integer数组时,为什么会收到“[Ljava.lang.Integer; @ 72608760”

时间:2013-09-19 20:11:34

标签: java arrays arraylist

这是代码。

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或其他一些数字变体(我假设它因每次调用时更改卡而变化)。有没有人知道它打印出来的原因而不是存储在整数数组中的实际值?

2 个答案:

答案 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()传入数组。

相关问题