0

私はnimのゲームを書いているはずです。コンパイルエラーの修正方法がわかりません

シンボルが見つかりません - メソッド getPlayer()

また、これはあなたが見ている唯一の問題ですか?または、このプログラムがコンパイルに失敗したり、正しく動作したりする原因となる他の問題がありますか?

import java.util.Scanner;
import java.util.Random;

public class Nim {
    private int n;
    private int compMode;
    private int numberLeft;
    private int numberTaken;
    private boolean whoseTurn;
    private String inputName;
    private String name;
    private String play;
    private boolean yes;
    Scanner in = new Scanner(System.in);
    Random num = new Random();

    public void setState() {
        numberLeft = 100;

        numberTaken = numberLeft;
    }

    public String getPlayer() {
        inputName = in.next("");
        inputName = name;
        return name;
    }

    public void getCompPlay() {
        compMode = num.nextInt(2);
        if (compMode == 0) System.out.println("The computer is in smart mode");

        if (compMode == 1) System.out.println("The computer is in random mode");
    }

    public void playGame() {
        if (whoseTurn == true) {
            System.out.println(name + "It is your turn...");
            System.out.printf("Please enter the number you wish to take from the pile (Must be less than " + (numberLeft / 2) + "): ");
            numberTaken = in.nextInt();
            numberLeft -= numberTaken;
            System.out.println("The number left is " + numberLeft);
            whoseTurn = false;
        }

        if (whoseTurn == false) {
            System.out.println("It is the computer's turn...");
            if (compMode == 0) {
                numberLeft = smartComputer(numberLeft);
                System.out.println("The number left is " + numberLeft);
            }

            if (compMode == 1) {
                numberLeft -= num.nextInt(numberLeft / 2);
                System.out.println("The number left is " + numberLeft);
            }
            whoseTurn = true;
            return;
        }

        if (yes == true) {

        }

        if (numberLeft <= 1) {
            if (whoseTurn = false) {
                System.out.println("You Win!");
            } else {
                System.out.println("You're horrible...you lost to a computer.");
            }
        }

        if (numberLeft <= 1) {
            if (whoseTurn = false) {
                System.out.println("You Win!");
            } else {
                System.out.println("you lost to a computer.");
            }
        }

    }

    public static int smartComputer(int num) {
        int power = 2;
        while (power < num) {
            power *= 2;
        }
        power /= 2;
        num = power - 1;
        return num;
    }

    public boolean playAnother() {
        System.out.println("/nPlay Again? (y/n)");
        play = in.next("");
        if (play.equalsIgnoreCase("y")) return true;
        else return false;
    }

    public void displayTotals() {}
}

そして、これが私のテスターです

public class NimTester {
    public static void header() {
        System.out.println("Eric Magnusson");
        System.out.println("AP Comp Sci");
        System.out.println("Game of Nim (P6.16)");
    }
    public static void main() {
        Nim nim = new Nim(getPlayer(), getCompPlay());

        do {
            nim.setState();
            nim.playGame();
            nim.printWinner();
        } while (playAnother());
        nim.displayTotals();
    }
}
4

1 に答える 1

0

クラスに特定のコンストラクターがないか、コードに表示されていません。コンストラクターの詳細については、こちらのドキュメントをお読みください。簡単に言うと、コンストラクターは、JVM がメモリを整理してオブジェクトを初期化できるようにするメソッドです。既定のオブジェクト コンストラクターは、各子変数に既定値を設定する引数のないコンストラクターです。

例:

Class Car{
   public Car(){
      System.out.print("car is built.");
   }
}

Car aCar = new Car();

Nim nim = new Nim(getPlayer(), getCompPlay());したがって、Nimクラスにはメソッドが必要public Nim(String x, String y)です。

表示されているコードのもう 1 つの問題は、オブジェクト メソッドを使用してオブジェクトを作成していることです...メソッドが静的である必要がある (ここでそれについて読む) か、作成しているオブジェクトに依存しない必要があります。プログラムを単純化するには、その値を変数で使用する前に保存し、その変数をオブジェクト構築で使用します。または、次のような staic メソッドを作成することもできます。そうすれpublic static String getJohn(){return "John"}ば、コードはその時点を過ぎても機能します。

コードのその他の問題は読みやすさに関連しています。変数の命名方法については、Java 命名規則を参照してください。これらはメンテナンスに役立ち、他のプログラマーが支援できるようになります。

于 2015-11-09T19:53:25.150 に答える