samedi 12 janvier 2019

My program in getting stuck in a loop which it shouldn't do

I have four nearly identical while-lopps in my program. The program is going through 3 of them but getting stuck in the fourth (the last).

What I am trying to achieve is a program that gives every player 13 random playing cards.

I have add the relevant piece of the program below.

public static void main(String[] args) {
    String[] cards = new String[53];
    cards[1] = "1k"; cards[2] = "2k"; cards[3] = "3k"; cards[4] = "4k"; cards[5] = "5k"; cards[6] = "6k";
    cards[7] = "7k"; cards[8] = "8k"; cards[9] = "9k"; cards[10] = "10k"; cards[11] = "11k"; cards[12] = "12k";
    cards[13] = "13k"; 
    cards[14] = "1h"; cards[15] = "2h"; cards[16] = "3h"; cards[17] = "4h"; cards[18] = "5h"; cards[19] = "6h";
    cards[20] = "7h"; cards[21] = "8h"; cards[22] = "9h"; cards[23] = "10h"; cards[24] = "11h"; cards[25] = "12h";
    cards[26] = "13h";
    cards[27] = "1r"; cards[28] = "2r"; cards[29] = "3r"; cards[30] = "4r"; cards[31] = "5r"; cards[32] = "6r";
    cards[33] = "7r"; cards[34] = "8r"; cards[35] = "9r"; cards[36] = "10r"; cards[37] = "11r"; cards[38] = "12r";
    cards[39] = "13k";
    cards[40] = "1s"; cards[41] = "2s"; cards[42] = "3s"; cards[43] = "4s"; cards[44] = "5s"; cards[45] = "6s";
    cards[46] = "7s"; cards[47] = "8s"; cards[48] = "9s"; cards[49] = "10s"; cards[50] = "11s"; cards[51] = "12s";
    cards[52] = "13s";

    String[] player1 = new String[14];
    String[] player2 = new String[14];
    String[] player4 = new String[14];
    String[] player3 = new String[14];

    String used = "";
    int i1 = 0;
    int i2 = 0;
    int i3 = 0;
    int i4 = 0;


    while (true) {
        Random rand1 = new Random();
        int irand1 = rand1.nextInt(51) + 1 ;

        String card = cards[irand1];

        if (i1 == 14) 
            break;

        if (used.contains(card))
            continue;

        else {
            player1[i1] = card;
            used = used + " " + card;
            i1++;
        }
    }

        while (true) {
            Random rand2 = new Random();
            int irand2 = rand2.nextInt(51) + 1 ;

            String card2 = cards[irand2];

            if (i2 == 14) 
                break;

            if ( used.contains(card2))
                continue;

            else {
                player2[i2] = card2;
                used = used + " " + card2;
                i2++;
            }

        }


        while (true) {
            Random rand3 = new Random();
            int irand3 = rand3.nextInt(51) + 1;

            String card3 = cards[irand3];

            if (i3 == 14) 
                break;

            if (used.contains(card3))
                continue;

            else {
                player3[i3] = card3;
                used = used + " " + card3;
                i3++;
            }           
    }

        while (true) {
            Random rand4 = new Random();
            int irand4 = rand4.nextInt(51) + 1;

            String card4 = cards[irand4];

            if (i4 == 14) 
                break;

            if (used.contains(card4))
                continue;

            else {
                player4[i4] = card4;
                used = used + " " + card4;
                i4++;
            }           
    }

}

 }

To clarify, the while-loop the program is getting stuck in is:

while (true) {
            Random rand4 = new Random();
            int irand4 = rand4.nextInt(51) + 1;

            String card4 = cards[irand4];

            if (i4 == 14) 
                break;

            if (used.contains(card4))
                continue;

            else {
                player4[i4] = card4;
                used = used + " " + card4;
                i4++;
            }           
    }

Any help would be appreciated, Thanks!




Aucun commentaire:

Enregistrer un commentaire