切换导致方法变为非静态? if语句也是如此?

时间:2013-11-09 02:06:56

标签: java

什么原因导致方法变为“非静态”?

我一直试图让这个投掷硬币。可悲的是,几十年(至少感觉就像它)通过了,我想通过的是,如果(随意纠正我)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;
}

我得到这个错误,说静态上下文不能反映非静态方法

3 个答案:

答案 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);