Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何根据用户的输入为纸牌游戏添加另一副牌_Java_Arrays - Fatal编程技术网

Java 如何根据用户的输入为纸牌游戏添加另一副牌

Java 如何根据用户的输入为纸牌游戏添加另一副牌,java,arrays,Java,Arrays,您好,我是java新手,我一直在尝试创建一个程序,使您能够从洗牌或有序的牌组中抽牌 现在我想让用户选择甲板的数量。我尝试过不同的方法,但都没能成功 自从我用瑞典语写了这个程序以来,我已经添加了一些注释作为翻译: import java.util.Scanner; public class KortSpel { public static void main(String[] args) { Boolean fortsatt = true;

您好,我是java新手,我一直在尝试创建一个程序,使您能够从洗牌或有序的牌组中抽牌

现在我想让用户选择甲板的数量。我尝试过不同的方法,但都没能成功

自从我用瑞典语写了这个程序以来,我已经添加了一些注释作为翻译:

import java.util.Scanner;

public class KortSpel {
    public static void main(String[] args) {
        Boolean fortsatt = true;        
        while(fortsatt){    

        Scanner scan = new Scanner(System.in);

        int[] deck = new int[52]; 

        String[] suits = {"Spader", "Hjärter", "Ruter", "Köver"};    //the suits
        String[] ranks = {"Ess", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Knäckt", "Drottning", "Kung"}; //the rank of the cards

        for( int i = 0; i < deck.length; i++) deck[i] = i;



        System.out.print("Skriv dra för att dra korten annars avsluta."); //ask the user if he want to keep playing or not
        String svar2 = scan.nextLine();

        if (svar2.equalsIgnoreCase("Avsluta")){ 
            fortsatt = false;
            System.out.println("Du har nu avslutat.");  //tells the user he has exit
        }

        else {


            System.out.print("Vill du bland korten? (ja/nej) "); //ask the user if he want to shuffle the cards Y/N
            String svar = scan.nextLine();

            if (svar.equalsIgnoreCase("ja")) {                  // if shuffled

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

                    int index = (int)(Math.random() * deck.length);
                    int temp = deck[i];
                    deck[i] = deck[index];
                    deck[index] = temp;
                }
                for( int i = 0; i < 52; i++) {
                    String suit = suits[deck[i] / 13];
                    String rank = ranks[deck[i] % 13];
                    System.out.println("Kort nummer " + deck[i] + ": " + suit + " " + rank);
                }
            }

            else    {                                           //if not suffled

                for( int i = 0; i < deck.length; i++) deck[i] = i;

                for( int i = 0; i < 52; i++) {
                    String suit = suits[deck[i] / 13];
                String rank = ranks[deck[i] % 13];
                System.out.println("Kort nummer " + deck[i] + ": " + suit + " " + rank);
        }
        }

    }
}       

我不知道我是否理解正确,但您可能希望在程序运行期间从命令行读取数据

如果是,则可以使用System.console

 Console c = System.console();
    if (c == null) {
        System.err.println("No console.");
        System.exit(1);
    }

    String deck = c.readLine("Enter additional deck: ");

您可以在此处找到更多信息:

使您的应用程序成为动态的1-To-n组。您必须在编码之前进行应用程序设计。我建议您使用节点样式。比如:

class Deck{

    Deck nextDeck;
    Deck periousDeck;

    String[] card1=new String[13];
    String[] card2=new String[13];
    String[] card3=new String[13];
    String[] card4=new String[13];

    Deck(){
        //initialization of cards
    }
}
这是你的节点,它也有点复杂


在执行此操作之前,请查看手动链接列表

您可以使用int[][]deck=new int[2][52];双层sint[]deck=new int[52*2]的示例;对于int i=0;i<甲板长度;i++deck[i]=i%52;若我不是2,而是添加了一个包含数字的变量,那个会怎么样呢。因此,用户可以选择x数量的deckstried建议和没有工作。无论如何,谢谢你:你的方法是正确的,但是我想让用户选择X个甲板数量,而不是添加1个甲板。例如,他可以从开始直接选择6组。@Hevar这实际上让用户选择一个数字。然后您可以选择创建N个选定的数字组。也不应该是我们走对了路,而是你自己;因为这是你的家庭作业