无法从另一个类JAVA调用方法

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)

我试过用不同的方式调用它,使用参数而不是,并试图单独调用变量,认为它们应该是私有的.任何帮助表示赞赏.

Sot*_*lis 5

你以前用过

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()已经返回一个truefalse值,为什么要将它与== 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.