2016-12-06 7 views
0

私はロックペーパー - はさみプログラムをやっています。私のコードでは、方法determineWinner()までスクロールすると、私はそれを設定しましたが、方法main()では、私がそれを呼び出すと、あなたが勝ったか、縛られたか、失われたとしても、それは印刷されません。私のプログラムでは何も印刷しません

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()); 
    } 
} 

はここに私のクラスである:

はここに私のメインの方法です。あなたはローカル変数、例えば

でフィールドをシャドウしている

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;} 

} 
+0

decideWinner()のPChoiceとCChoiceはthis.PCchoiceとthis.CChoiceまたはローカル変数を参照しますか? –

+0

[可変スコープ](http://www.java2s.com/Tutorial/Java/0020__Language/VariableScope.htm)。 CPUは壊れていません。スコープ外の変数を参照しています。 – MikeJRamsey56

+0

私はあなたの質問を編集しました - 私は不要な行を削除しました。 – xenteros

答えて

0

int PPChoice = in.nextInt(); 

PPChoice = in.nextInt(); 

への変更編集

は、実際に、それはあなたが他のタイプの変数でシャドウイングされ、悪化しています。ローカル変数は文字列です。 IMOはStringを完全に取り除き、使用されていません。

を使用すると、getメソッドを呼び出すときには、プレイヤーのコンピュータの選択の両方を設定する必要があります

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(); 
    } 
0

のようないくつかのコードを試してみてください。それを以下で修正しました。

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; 


} 

} 
+0

btw、あなたのコンストラクタは、それ自身を指すのではなく、渡されたパラメータを使うべきです。wrong => 'this.CChoice = CChoice; this.PChoice = PChoice; ' – Jerry

関連する問題