0

我正在做一个数字猜测程序。生成一个随机数,用户尝试猜测它。程序会打印“太高”或“太低”,让用户再次猜测。我在将第一个猜测输入到进行猜测的方法中时遇到问题。

这是我的课:

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());

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

4

4 回答 4

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()已经返回一个trueorfalse值,那么为什么要与它进行比较呢== 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.

于 2013-11-13T02:03:17.607 回答
3

不要使用确切的类名作为变量名

MyNumberGuess MyNumberGuess = new MyNumberGuess(in.nextInt());

有的话换个外壳

MyNumberGuess myNumberGuess = new MyNumberGuess(in.nextInt());
于 2013-11-13T02:01:42.007 回答
0

您缺少一个花括号,您有您的类定义,然后您有一个函数定义,但没有结束分号。而且您不应该对这么多变量使用相同的名称。

于 2013-11-13T02:09:19.810 回答
0

我遇到了一个奇怪的问题:无论是静态的还是设置实例化它,我都无法访问我的一个类的公共方法。我最终删除了该课程并创建了一个具有不同名称的新课程。我一定是踩了一个内置的类名。

于 2014-12-04T16:17:26.483 回答