Я пытаюсь распечатать 5 случайных карт из колоды 52, а затем отсортировать 5 карт по возрастанию - PullRequest
0 голосов
/ 25 февраля 2020

вывод, когда я запускаю его с отсортированным массивом: 10 мастей, 10 мастей, 10 мастей, 10 мастей, 2 масти. но когда я снимаю Array.sort, он генерирует 5 случайных карт, но не в порядке возрастания. есть идеи, почему это происходит?

import java.util.*;

public class Proj4 {

    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        final int WID = 859653508;
        int lastDigits = WID % 10000;
        int count = 0;
        final int DIAMONDS = 0, HEARTS = 1, CLUBS = 2, SPADES = 3;
        final int JACK = 11, QUEEN = 12, KING = 13, ACE = 14;
        String passWord = "CIS200$Spr20";
        String L = "Deaton";
        String username = "Deat3508";
        String[] suits = new String[]{"Clubs", "Hearts", "Diamonds", "Spades"};
        String[] values = new String[]{"2","3","4","5","6","7","8","9","10","Jack","Queen","King","Ace"};



        int t = suits.length * values.length;
        String[] deck = new String[t];
        for(int i = 0; i < values.length; i++){
            for(int j = 0; j < suits.length; j++){
                deck[suits.length*i+j] = values[i] + " of " + suits[j];
            }
        }

        for(int i = 0; i < t; i++){
            int r = i + (int) (Math.random() * (t-i));
            String temp = deck[r];
            deck[r] = deck[i];
            deck[i] = temp;
        }

        for(int i = 0; i < 5; i++) {
            Arrays.sort(values);
            System.out.println(deck[i]);
        }

            if(deck[1].equals(deck[2]) && deck[2].equals(deck[3]) && deck[3].equals(deck[4]))
                System.out.print("Flush");
            if(deck[1].equals(deck[2+1]) && deck[2].equals(deck[2+1]) && deck[3].equals(deck[3+1]) &&
            deck[4].equals(deck[4+1]) && deck[5].equals(deck[5+1]))
                System.out.print("Straight");
            if(deck[1].equals(deck[2]) && deck[2].equals(deck[3]) || deck[3].equals(deck[4])
    && deck[4].equals(deck[5]))
                System.out.println("Three of a Kind");


    }
}

1 Ответ

0 голосов
/ 25 февраля 2020

Взятие 5 случайных карт из случайной колоды из 52 может быть достигнуто путем взятия карт со второй по шестую (индекс от 1 до 5, как в вашем коде), что так же случайно, как и любые 5 карт. Из-за вашей ошибки сортировки, как указали другие, вы все равно sh выполняете то, что намеревались сделать, взяв массив [1 ... 5]

Теперь зачем сортировать колоду, когда вы перемешали ее несколько линии выше? Обратите внимание, что массивы основаны на 0.

Все, что вам нужно сделать, это скопировать 5 карт в новый массив размера 5 и отсортировать этот массив. Теперь вы должны убедиться, что сортировка выполнена в ожидаемом порядке. Укусы отсортированы по лексическому порядку в юникоде. Возможно, вы захотите переименовать ваши карты "1 (туз), 11 (Джек), чтобы порядок был в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...