我正在制作一个猜测程序。生成随机数,用户尝试猜测它。程序将打印“太高”或“太低”,让用户再次猜测。我有一个问题是在第一个之后输入猜测进入猜测的方法。
这是我的班级:
import java.util.Scanner;
public class Lab8
{
public static void main (String [] args)
{
Scanner in = new Scanner(System.in);
System.out.println("Enter a number: ");
MyNumberGuess MyNumberGuess = new MyNumberGuess(in.nextInt());
while (MyNumberGuess.tooLow() == true || MyNumberGuess.tooHigh() == true)
{
if (MyNumberGuess.tooHigh() == true)
{
System.out.println("Too high");
System.out.println("Enter a number: ");
MyNumberGuess.MyNumberGuess(in.nextInt());
}
else if (MyNumberGuess.tooLow() == true)
{
System.out.println("Too low");
System.out.println("Enter a number: ");
MyNumberGuess.MyNumberGuess(in.nextInt());
}
}
System.out.println("Correct");
System.out.println("You made " + MyNumberGuess.getNumGuesses() + " guesses");
}
}
这是另一个类,以及问题方法:
import java.util.*;
public class MyNumberGuess
{
public static final int MAX_GUESS = 1000;
private int theNumber, numGuesses, prevGuess;
public MyNumberGuess(int inGuess)
{
Random generator = new Random();
numGuesses = 1;
prevGuess = inGuess;
theNumber = generator.nextInt(MAX_GUESS);
}
}
按原样,我在第一堂课的这一行编译时遇到“找不到符号”的错误:
MyNumberGuess.MyNumberGuess(in.nextInt());
我试过用不同的方式调用它,使用参数而不是,并试图单独调用变量,认为它们应该是私有的。任何帮助表示赞赏。
答案 0 :(得分:5)
您之前使用过
MyNumberGuess MyNumberGuess = new MyNumberGuess(in.nextInt());
创建一个类的实例。你为什么要用
MyNumberGuess.MyNumberGuess(in.nextInt());
做同样的事情?
此
public MyNumberGuess(int inGuess)
{
Random generator = new Random();
numGuesses = 1;
prevGuess = inGuess;
theNumber = generator.nextInt(MAX_GUESS);
}
是一个构造函数。您需要使用new
运算符调用它。
重新初始化变量
MyNumberGuess = new MyNumberGuess(in.nextInt());
请注意,java约定声明变量的名称应以小写字符开头。
另一方面,这段代码
while (MyNumberGuess.tooLow() == true || MyNumberGuess.tooHigh() == true)
是多余的。方法调用MyNumberGuess.tooLow()
已经返回true
或false
值,为什么要将其与== true
进行比较?只需直接使用它。例如
if (MyNumberGuess.tooLow()) // read it as "If my number guess is too low"
或
if (!MyNumberGuess.tooLow()) // read it as "If my number guess is not too low"
适当地应用while
。
答案 1 :(得分:3)
不要使用确切的类名作为变量名
MyNumberGuess MyNumberGuess = new MyNumberGuess(in.nextInt());
更改外壳(如果有)
MyNumberGuess myNumberGuess = new MyNumberGuess(in.nextInt());
答案 2 :(得分:0)
你缺少一个花括号,你有你的类定义,然后你有一个函数定义,但没有结束分号。并且您不应该为这么多变量使用相同的名称。
答案 3 :(得分:0)
我有一个奇怪的问题:无论我无法访问其中一个类的公共方法,无论它是静态的还是我设置实例化它。我最终删除了该类并创建了一个具有不同名称的新类。我一定是踩着内置的班级名字。