什么原因导致方法变为“非静态”?
我一直试图让这个投掷硬币。可悲的是,几十年(至少感觉就像它)通过了,我想通过的是,如果(随意纠正我)if语句/开关在方法内部,它会使方法非静态。那么如何解决这个错误呢。重要的事情要知道:p1Choose
开始是真的。我希望这个方法返回true如果这个人赢了硬币投掷(如果p1Choose
为真,那么它的玩家1,如果它是假,则它是玩家2)。
public boolean cointoss() {
int toss = Random.nextInt(1); // Or is this random causeing it????
String HorT;
String callHorT;
boolean returnMe = true;
if ( toss == 0) {
HorT = "Heads";
} else {
HorT = "Tails";
}
if ( p1Choose == true ) {
System.out.println( p1Name + " choose Heads or Tails!");
callHorT = scan.next();
if( HorT != callHorT) {
System.out.println("You lose!");
returnMe = false;
}
if( HorT == callHorT) {
System.out.println("You lose!");
returnMe = true;
}
} else if ( p1Choose ==false ) {
System.out.println( p2Name + " choose Heads or Tails!");
callHorT = scan.next();
if( HorT != callHorT) {
System.out.println("You lose!");
returnMe = false;
}
if( HorT == callHorT) {
System.out.println("You lose!");
returnMe = true;
}
}
if (p1Choose == true ) {
p1Choose = false;
}
if (p1Choose == false) {
p1Choose = true;
}
return returnMe;
}
我得到这个错误,说静态上下文不能反映非静态方法
答案 0 :(得分:4)
static
关键字的存在与否是唯一使方法成为静态的方法。
答案 1 :(得分:0)
我不明白你为什么这么想。我的代码中没有看到任何内容,这可能会迫使您这样思考 如果方法在其签名中具有静态修饰符,则该方法可以是静态的。其他那么它不能是静态的。静态或非静态不依赖于方法的内部结构 但是,有一件事,你不能使用静态方法中的任何非静态方法或变量。这部分可能会让你觉得你正在思考这个问题。当你使用if-else时你可以使用一些非静态变量但是当使用switch时你可能不需要使用它们 请求您检查此部分。
答案 2 :(得分:0)
我认为你错误地解释了你的错误......
int toss = Random.nextInt(1); //或者这是随机造成的????
nextInt()
不是Random
上的静态方法。请尝试这样做:
Random r = new Random();
int toss = r.nextInt(1);