Java 我有编译错误;找不到符号-方法getPlayer();
我应该在写《尼姆的游戏》。我很难找到修复编译错误的方法 找不到符号-方法getPlayer() 还有,这是你看到的唯一问题吗?或者是否有其他问题会导致该程序无法编译或正常工作Java 我有编译错误;找不到符号-方法getPlayer();,java,methods,cannot-find-symbol,Java,Methods,Cannot Find Symbol,我应该在写《尼姆的游戏》。我很难找到修复编译错误的方法 找不到符号-方法getPlayer() 还有,这是你看到的唯一问题吗?或者是否有其他问题会导致该程序无法编译或正常工作 import java.util.Scanner; import java.util.Random; public class Nim { private int n; private int compMode; private int numberLeft; private int nu
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() {}
}
您的类要么没有特定的构造函数,要么在代码中不是shwon。简单地说,构造函数是一种允许JVM组织内存和初始化对象的方法。 默认对象构造函数是一个非参数构造函数,它将每个子变量设置为默认值 例如:
Class Car{
public Car(){
System.out.print("car is built.");
}
}
Car aCar = new Car();
您拥有的是Nim Nim=new Nim(getPlayer(),getCompPlay())因此,您的Nim
类必须有一个公共Nim(字符串x,字符串y)
方法
所示代码的另一个问题是,您正在使用对象方法创建对象。。。
方法必须是静态的(),或者不依赖于您正在创建的对象。为了简化程序,只需在变量中使用该值之前保存该值,然后在对象构造中使用该变量。或者甚至创建一个staic方法,比如:publicstaticstringgetjohn(){return“John”}
,然后您的代码将工作到该点
代码的其他问题与可读性有关,请阅读Java命名约定,了解如何命名变量,它们将有助于维护,并允许其他程序员帮助您。getPlayer()
是类的一种方法Nim
。您需要一个Nim的实例来调用它。if(whoseTurn=false)
是一个问题。应该是if(whoseTurn==false)
,但是我会告诉你一个提示,如果(!whoseTurn)
这些都是注释,而不是问题的答案。Yea还没有为该部分编写任何代码。我想编译这个问题first@cricket_007问题是这是你看到的唯一问题吗?或者是否有其他问题会导致该程序无法编译或正常工作代码>。。。构造函数不存在、表达式为非布尔型以及比较的变量为非启动变量都是问题。当然,但您可以更新您的答案,解释这些问题的原因以及如何解决这些问题,而不是简单地指出它们。例如,OP可能不知道什么是构造函数或者为什么需要构造函数,或者使用静态和非静态方法之间的区别,等等。
Class Car{
public Car(){
System.out.print("car is built.");
}
}
Car aCar = new Car();