簡體   English   中英

無法從另一個類JAVA調用方法

[英]Can't call a method from another class JAVA

我正在做一個數字猜測程序。 生成一個隨機數,然后用戶嘗試猜測它。 該程序將打印“太高”或“太低”,並讓用戶再次猜測。 我在將第一個猜測后的猜測輸入到進行猜測的方法中時遇到問題。

這是我的課:

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

我嘗試以不同的方式調用它,而不使用參數,並嘗試僅調用變量,以為它們應該是私有的。 任何幫助表示贊賞。

您以前使用過

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()的方法已經返回了truefalse值,那么為什么將它與== 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

不要使用確切的類名作為變量名

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

更換外殼

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

您缺少大括號,您有您的類定義,然后您有函數定義,但沒有結尾分號。 而且您不應該對多個變量使用相同的名稱。

我有一個奇怪的問題:無論我是不能訪問我的一個類的公共方法的,無論它是靜態的還是設置實例化它都是如此。 我最終刪除了該類,並使用不同的名稱創建了一個新類。 我一定一直在踩一個內置的類名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM