2016-01-20 48 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不是一个变量,无法找到。 –