2016-01-20 50 views
0

我正在嘗試創建一個Rochambeau遊戲。我困在查詢lastThrow。這個查詢將從計算機和播放器中引發並輸出「Computer throws :: Rock,Paper或Scissors ::」最後一部分應該引用makeThrow查詢。無論玩家/電腦是否拋出,我的lastThrow方法總是將「Rock」放在一邊。對於如何解決這個問題,有任何的建議嗎?Rochambeaua遊戲(字符串輸出)

import java.lang.Object; 
import java.util.Random; 

public class RochambeauPlayer{ 

    public int wins; 
    public String name; 
    public int lastThrow; 
    public int throwMade; 

    public RochambeauPlayer(java.lang.String name){ 
    this.name = name; 
    } 

    public java.lang.String getName(){ 
    return name; 
    } 

    public int getWins(){ 
    return wins; 
    } 

    public void incrementWins(){ 
    wins++; 
    } 

    public int makeThrow(){ 
    Random rand = new Random(); 
    int throwMade = rand.nextInt(3); 
    Rochambeau.rock = 0; 
    Rochambeau.paper = 1; 
    Rochambeau.scissors = 2; 
    return throwMade; 
    } 

    public int makeThrow(int throwType){ 
// RETURNS RANDOM (SO COMPUTER DOESNT ALWAYS WIN) 
    Random rand = new Random(); 
    int throwMade = rand.nextInt(3); 
    if (throwType == Rochambeau.rock){ 
     return throwMade; 
    } else if (throwType == Rochambeau.paper){ 
     return throwMade; 
    } else if (throwType == Rochambeau.scissors){ 
     return throwMade; 
    } else { 
     return throwMade; 
    } 
} 

public java.lang.String lastThrow(){ 
    if (throwMade == 0){ 
    return "Rock"; 
} else if (throwMade == 1){ 
    return "Paper"; 
} else if (throwMade == 2){ 
    return "Scissors"; 
} else { 
    return "No Throw"; 
} 
} 


    public java.lang.String toString(){ 
    return name + " has " + wins + " win(s)."; 
    } 
} 

回答

0

throwMade沒有再指定爲全局變量的作用域作爲其宣佈爲法局部變量。

從兩種方法:makeThrow(int throwType)makeThrow()方法中刪除本地變量throwMade的聲明。

throwMade = rand.nextInt(3); //just assign not declare 
instead of 
int throwMade = rand.nextInt(3); 

任何varible宣佈爲全球,並與當地的方法相同的名稱。兩者都是不同的變量,僅限於範圍。

+0

如果我這樣做,我怎樣才能將我的lastThrow方法中的throwMade更改爲? –

+0

請參閱更新的安裝程序。方法中只分配值不再聲明變量。 – iMBMT

+0

我做到了,但現在我得到一個錯誤,說throwMade不是一個變量,無法找到。 –