coi*_*ird 0 java methods class
我正在制作一个猜测程序.生成随机数,用户尝试猜测它.程序将打印"太高"或"太低",让用户再次猜测.我在第一个猜测输入猜测的方法后输入猜测有问题.
这是我的班级:
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");
}
}
Run Code Online (Sandbox Code Playgroud)
这是另一个类,以及问题方法:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
在我的第一堂课中编译时,我得到一个"找不到符号"的错误:
MyNumberGuess.MyNumberGuess(in.nextInt());
Run Code Online (Sandbox Code Playgroud)
我试过用不同的方式调用它,使用参数而不是,并试图单独调用变量,认为它们应该是私有的.任何帮助表示赞赏.
你以前用过
MyNumberGuess MyNumberGuess = new MyNumberGuess(in.nextInt());
Run Code Online (Sandbox Code Playgroud)
创建一个类的实例.你为什么要用呢?
MyNumberGuess.MyNumberGuess(in.nextInt());
Run Code Online (Sandbox Code Playgroud)
做同样的事情?
这个
public MyNumberGuess(int inGuess)
{
Random generator = new Random();
numGuesses = 1;
prevGuess = inGuess;
theNumber = generator.nextInt(MAX_GUESS);
}
Run Code Online (Sandbox Code Playgroud)
是一个构造函数.您需要与new操作员一起调用它.
只需重新初始化变量即可
MyNumberGuess = new MyNumberGuess(in.nextInt());
Run Code Online (Sandbox Code Playgroud)
请注意,java约定声明变量的名称应以小写字符开头.
另一方面,这段代码
while (MyNumberGuess.tooLow() == true || MyNumberGuess.tooHigh() == true)
Run Code Online (Sandbox Code Playgroud)
是多余的.方法调用MyNumberGuess.tooLow()已经返回一个true或false值,为什么要将它与== true?进行比较?只需直接使用它.例如
if (MyNumberGuess.tooLow()) // read it as "If my number guess is too low"
Run Code Online (Sandbox Code Playgroud)
要么
if (!MyNumberGuess.tooLow()) // read it as "If my number guess is not too low"
Run Code Online (Sandbox Code Playgroud)
适当地应用while.