简体   繁体   中英

My program doesn't print out anything when I execute it

I am doing a rock-paper-scissors program and in my code, if you scroll down to method determineWinner() , I have set it up, but in the method main() , when I invoke it, it doesn't print whether you won, tied, or lost.

Here is my main method:

public class RockPaperScissorsMain {

    public static void main(String[] args) {
        RockPaperScissorsClass rc = new RockPaperScissorsClass();
        System.out.println("Player is: " + rc.getPlayer());
        System.out.println("Computer is: " + rc.getComputer());
        System.out.println(rc.determineWinner());
    }
}

Here is my class.

public class RockPaperScissorsClass {

private int wins;
private int losses;
private int ties;
private int CChoice;
private int PChoice;

public RockPaperScissorsClass(int wins, int losses, int ties, int computerPick, int playerPick) {
    this.wins=wins;
    this.losses=losses;
    this.ties=ties;
    this.CChoice=CChoice;
    this.PChoice=PChoice;
}
public String getPlayer() {

    Scanner in = new Scanner(System.in);
    System.out.println("Enter Choice(1=Rock, 2=Paper, 3=Scissors)-->");
    int PPChoice = in.nextInt();
    String PChoice = null;
    if(PPChoice==1) {
        PChoice="Rock";
    }
    else if(PPChoice==2) {
        PChoice="Paper";
    }
    else if(PPChoice==3) {
        PChoice="Scissors";
    }
    else {
        while(true) {
        System.out.println("You have entered an invalid choice. Please try again.");
        System.out.println("Enter Choice(1=Rock, 2=Paper, 3=Scissors)-->");
        PPChoice = in.nextInt();
        if(PPChoice==1) {
            PChoice="Rock";
            break;
        }
        else if(PPChoice==2) {
            PChoice="Paper";
            break;
        }
        else if(PPChoice==3) {
            PChoice="Scissors";
            break;
        }
    }
    return PChoice;
}

public String getComputer() {
    Random rand = new Random();
    int CCChoice = rand.nextInt(3)+1;
    String CChoice = null;
    if(CCChoice==1) {
        CChoice="Rock";
    }
    else if(CCChoice==2) {
        CChoice="Paper";
    }
    else if(CCChoice==3) {
        CChoice="Scissors";
    }
    return CChoice;
}
public String determineWinner() {
    String detWinner = "";
    if(PChoice==1 && CChoice==2) {
        detWinner  = "You Lose";
    }
    else if(PChoice==1 && CChoice==3) {
        detWinner = "You Win";
    }
    else if(PChoice==2 && CChoice==3) {
        detWinner  = "You Lose";
    }
    else if(PChoice==2 && CChoice==1) {
        detWinner = "You Win";
    }
    else if(PChoice==3 && CChoice==1) {
        detWinner  = "You Lose";
    }
    else if(PChoice==3 && CChoice==2) {
        detWinner = "You Win";
    }
    else if(PChoice==1 && CChoice==1){
        detWinner = "You Have Tied";
    }
    else if(PChoice==2 && CChoice==2) {
        detWinner = "You Have Tied";
    }
    else if(PChoice==3 && CChoice==3){
        detWinner = "You Have Tied";
    }
    return detWinner;
}

public RockPaperScissorsClass() {this(0,0,0,0,0);}  
public void setPlayer(int p) {CChoice = p;}

}

You are shadowing the field with local variables

eg

int PPChoice = in.nextInt();

change to

PPChoice = in.nextInt();

Edit

Actually it is worse, you are shadowing with variables of other types. The local variables are Strings. IMO get rid of the String completely, there are not even used.

try some code like

    Scanner in = new Scanner(System.in);

    PChoice = 0;
    while (PChoice == 0) {

        System.out.println("Enter Choice(1=Rock, 2=Paper, 3=Scissors)-->");
        PChoice = in.nextInt();
    }

You should set both the player's and computer's choice when you call the get methods. Fixed it at below.

import java.util.Scanner;
import java.util.Random;
public class RockPaperScissorsClass {

private int wins;
private int losses;
private int ties;
private int CChoice;
private int PChoice;

public RockPaperScissorsClass()
{
    this(0,0,0,0,0);
}

public RockPaperScissorsClass(int wins, int losses, int ties, int computerPick, int playerPick) 
{
    this.wins=wins;
    this.losses=losses;
    this.ties=ties;
    this.CChoice=computerPick;
    this.PChoice=playerPick;
}

public void setPlayer(int p)
{
    PChoice = p;
}

public String getPlayer()
{

    Scanner in = new Scanner(System.in);
    System.out.println("Enter Choice(1=Rock, 2=Paper, 3=Scissors)-->");
    int PPChoice = in.nextInt();
    String PChoice = null;
    if(PPChoice==1)
    {
        PChoice="Rock";
    }
    else if(PPChoice==2)
    {
        PChoice="Paper";
    }
    else if(PPChoice==3)
    {
        PChoice="Scissors";
    }
    else
    {
        while(true)
        {
        System.out.println("You have entered an invalid choice. Please try again.");
        System.out.println("Enter Choice(1=Rock, 2=Paper, 3=Scissors)-->");
        PPChoice = in.nextInt();
        if(PPChoice==1)
        {
            PChoice="Rock";
            break;
        }
        else if(PPChoice==2)
        {
            PChoice="Paper";
            break;
        }
        else if(PPChoice==3)
        {
            PChoice="Scissors";
            break;
        }
    }
    }
    this.setPlayer(PPChoice);
    return PChoice;
}

public void setComputer(int c){
    CChoice = c;
}

public String getComputer()
{
    Random rand = new Random();
    int CCChoice = rand.nextInt(3)+1;
    String CChoice = null;
    if(CCChoice==1)
    {
        CChoice="Rock";
    }
    else if(CCChoice==2)
    {
        CChoice="Paper";
    }
    else if(CCChoice==3)
    {
        CChoice="Scissors";
    }
    this.setComputer(CCChoice);
    return CChoice;
}




public String determineWinner() 
{
    String detWinner = "";
    if(PChoice==1 && CChoice==2)
    {
        detWinner  = "You Lose";
    }
    else if(PChoice==1 && CChoice==3)
    {
        detWinner = "You Win";
    }
    else if(PChoice==2 && CChoice==3)
    {
        detWinner  = "You Lose";
    }
    else if(PChoice==2 && CChoice==1)
    {
        detWinner = "You Win";
    }
    else if(PChoice==3 && CChoice==1)
    {
        detWinner  = "You Lose";
    }
    else if(PChoice==3 && CChoice==2)
    {
        detWinner = "You Win";
    }
    else if(PChoice==1 && CChoice==1)
    {
        detWinner = "You Have Tied";
    }
    else if(PChoice==2 && CChoice==2)
    {
        detWinner = "You Have Tied";
    }
    else if(PChoice==3 && CChoice==3)
    {
        detWinner = "You Have Tied";
    }
    return detWinner;


}

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM