在java中洗牌

时间:2013-12-09 20:59:55

标签: java

我正在用java创建一个改组程序。我该如何退出呢。我是通过System.exit(0)来做的; ?

3 个答案:

答案 0 :(得分:2)

语句属于方法/构造函数体,但是您在任何方法之外都有这些方法调用:

shuffle(deck);    
draw(deck); 

将它们移到方法或构造函数中。

另外,那些方法没有参数;将参数添加到方法中或从调用中删除它们。

此外,这一行是一个无限循环,需要修复:

while (true);

您需要删除该分号,并根据您想要的while循环体,放置相应的大括号。

答案 1 :(得分:0)

shuffledraw的方法声明没有参数,但是当您调用它们时,您正在传递deck

此外,您应该将呼叫转移到main功能

答案 2 :(得分:0)

代码无法编译。让它编译。但我不认为它做你想做的事,因为其他人建议你需要修复无限循环。

这是可以解决的可编译代码...应该让你在这里更快一点。

正如其他人所提到的那样,移除顶部的洗牌(牌组)和抽牌(牌组)线。你还需要一个静态主体。还包括问题。以此为出发点。它运行。

import java.util.*;


public class Deck
{

static String [] number =
{
    "Ace", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King"
}
;

static String [] suit =
{
    "Clubs", "Hearts", "Diamonds", "Spades"
}
;

static String [] deck = new String[52];

int cardsUsed = 0;



public static void main (String [] args)
{


    Deck d = new Deck();

    for (int i = 0;
    i<
    number.length;
    i++)
    {

        for (int j = 0;
        j<
        suit.length;
        j++)
        {

            deck[13*j+i] = number[i] + " of " + suit[j];



        }


    }


    while (true)
    {

        System.out.println ("shuffle or draw");

        Scanner s = new Scanner(System.in);

        System.out.println ("What would you like to do?");

        String command = s.next( );

        if (command.equals("shuffle"))
        {

            d.shuffle();


        }
        else if (command.equals("draw"))
        {

            d.draw();


        }

        s.close();

    }



}


public void shuffle ()
{

    int k;

    Random shuffle = new Random();

    for (k = deck.length-1;
    k >
    = 0;
    k--)
    {

        int index = Math.abs((shuffle.nextInt())%52);

        String temp = deck[k];

        deck[k] = deck[index];

        deck[index] = temp;


    }

    int l;

    for (l = 0;
    l<
    deck.length;
    l++)
    {

        System.out.println (deck[l]);



    }


}


public void draw ()
{

    System.out.print (deck[cardsUsed]);

    if (cardsUsed <
    deck.length)
    {

        System.out.print (deck[cardsUsed]);


    }
    else
    {

        System.out.println ("No cards are left in the deck.");

        cardsUsed++;



    }


}

}