-2

メソッドが「非静的」になる原因は何ですか?

私はこのコイントスを機能させようとしてきました。悲しいことに、数十年(少なくともそのように感じます)が経過し、私が理解したのは、ifステートメント/スイッチがメソッド内にある場合(お気軽に修正してください)、メソッドが非静的になるということだけです。では、このエラーを回避するにはどうすればよいでしょうか。知っておくべき重要なこと:p1Choose最初は true です。人がコイントスに勝った場合、このメソッドが true を返すようにします ( p1Choosetrue の場合はプレーヤー 1、false の場合はプレーヤー 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;
}

非静的メソッドは静的コンテキストで参照できないというエラーが表示されます

4

3 に答える 3

4

あなたは間違った木を吠えています。メソッドを静的にするかどうかを決めるのは、キーワードの有無staticだけです。

于 2013-11-09T02:08:46.960 に答える
0

なぜそのように考えているのか理解できません。あなたのコードには何も表示されません。そのように考える必要があるかもしれません。
メソッドのシグネチャに static 修飾子がある場合、そのメソッドは static になることができます。それ以外の場合は、静的にすることはできません。静的または非静的は、メソッドの内部構造に依存しません。
ただし、静的メソッドから非静的メソッドまたは変数を使用することはできません。この部分は、あなたが今考えているように考えるのに苦労するかもしれません. if-else を使用する場合は非静的変数を使用できますが、switch を使用する場合はそれらを使用する必要がない場合があります。
この部分の確認をお願いします。

于 2013-11-09T02:16:22.603 に答える
0

エラーを誤解していると思います...

int トス = Random.nextInt(1); // または、これはランダムな原因ですか??

nextInt()の静的メソッドではありませんRandom。代わりにこれを試してください:

Random r = new Random();
int toss = r.nextInt(1);
于 2013-11-09T02:21:19.693 に答える