Search code examples
javaif-statementintoutputplaying-cards

Correcting and improving java code


The code I have written so far, is below and works however I am having a few issues with it 1) It runs the program more than once 2) The numbers don't seem to be very random, it seems to pick the same numbers out 3) I need the value 1 to display as Ace, the value 11 to display as Jack, the value 12 to display at Queen and the value 13 to display as King

I have gone over my code several times and cant figure out why it is doing point 1 I am not sure if it is just me, or if it is an issue with point 2 I know I need an if statment to do number 3 but not quite sure where to put it

The idea of the program is for the player to verse the computer and draw 7 cards each in turn, (suite doesn't need to be included) and output each card followed by the winner, with 1 output as ace, 11 output as jack, 12 output as queen and 13 output at king.

Many thanks for your help


import java.math.*;
import java.util.*;

public class CardProj {

public static void main(String[] args) {
    Scanner mykbd = new Scanner(System.in);
    Random rn = new Random();
    {
        for (int i = 0; i < 14; i++) {
            int card1player = 0;
            int card2player = 0;
            int card3player = 0;
            int card4player = 0;
            int card5player = 0;
            int card6player = 0;
            int card7player = 0;
            int card1Computer = 0;
            int card2Computer = 0;
            int card3Computer = 0;
            int card4Computer = 0;
            int card5Computer = 0;
            int card6Computer = 0;
            int card7Computer = 0;


            System.out.println("Player Card 1: " + card1player);
            card1Computer = rn.nextInt(7) + 1;
            System.out.println("Computer Card 1: " + card1Computer);
            System.out.println("");

            card2player = rn.nextInt(7) + 1;
            System.out.println("Player Card 2: " + card2player);
            card2Computer = rn.nextInt(7) + 1;
            System.out.println("Computer Card 2: " + card2Computer);
            System.out.println("");

            card3player = rn.nextInt(7) + 1;
            System.out.println("Player Card 3: " + card3player);
            card3Computer = rn.nextInt(7) + 1;
            System.out.println("Computer Card 3: " + card3Computer);
            System.out.println("");

            card4player = rn.nextInt(7) + 1;
            System.out.println("Player Card 4: " + card4player);
            card4Computer = rn.nextInt(7) + 1;
            System.out.println("Computer Card 4: " + card4Computer);
            System.out.println("");

            card5player = rn.nextInt(7) + 1;
            System.out.println("Player Card 5: " + card5player);
            card5Computer = rn.nextInt(7) + 1;
            System.out.println("Computer Card 5: " + card5Computer);
            System.out.println("");

            card6player = rn.nextInt(7) + 1;
            System.out.println("Player Card 6: " + card6player);
            card6Computer = rn.nextInt(7) + 1;
            System.out.println("Computer Card 6: " + card6Computer);
            System.out.println("");

            card7player = rn.nextInt(7) + 1;
            System.out.println("Player Card 7: " + card7player);
            card7Computer = rn.nextInt(7) + 1;
            System.out.println("Computer Card 7: " + card7Computer);
            System.out.println("");

            int playertotal = card1player + card2player + card3player + card4player + card5player + card6player + card7player;
            int computertotal = card1Computer + card2Computer + card3Computer + card4Computer + card5Computer + card6Computer + card7Computer;

            if (playertotal > computertotal) {
                System.out.print("Player Wins, Players Score is, " + playertotal + " Computers Score is, " + computertotal + " ");
            } else if (computertotal > playertotal) {
                System.out.print("Computer Wins, Computer Score is, " + computertotal + " Players Score is, " + playertotal + " ");
            } else {
                System.out.print("Draw Players Score is, " + playertotal + " Computers Score is, " + computertotal + " ");
            }
        }
    }
}

}


Solution

  • You can create an array of cardPlayers and cardComputers. For instance try this below

     int numPlayers = 14;
     int [] cardPlayer = new int[numPlayers];
     int [] cardComputer = new int[numPlayers];
    
     for (int i = 0; i < numPlayers; i++) {         
                System.out.println("Player Card " + i + ": " + cardPlayer[i]);
                cardComputer[i] = rn.nextInt(7) + 1;
                System.out.println("Computer Card " + "i" + cardComputer[i]);
                System.out.println("");
    }
    

    This will make your code more readable and reduce lines in total