2

所以几周前我刚开始使用 Java,我正在尝试自学如何制作自己的方法。我编写了一个程序,在编译“ClassTest”类时添加两个数字。这是错误:

H:\Java Things\ClassTest.java:10: error: cannot find symbol
            GetNum(int1, int2);
        ^
  symbol:   method GetNum(int,int)
  location: class ClassTest
1 error

Process completed.

这是ClassTest的代码:

import LotsOfMethods.*;

public class ClassTest
{
    public static void main (String[] args)
    {
        int int1 = 5, int2 = 7;
        GetNum(int1, int2);
    }
}

这是ExampleMethod的代码:

package LotsOfMethods;

public class ExampleMethod
{
    public static int GetNum(int num1, int num2)
    {
        int result;
        result = num1 + num2;
        return result;
    }
}
4

2 回答 2

1

首先,重要的是要了解如何在 Java 中调用方法。您需要指定将实现该方法的对象,以及您正在调用的方法的名称。

当你写:

GetNum(int1, int2);

您没有指定将执行 GetNum 的对象。Java 有一些默认行为来处理这种情况:它尝试从代码周围的对象上下文中解析方法。所以 Java 说,“我找不到属于这个 ClassTest 对象的 GetNum() 方法”,你会得到错误:

H:\Java Things\ClassTest.java:10: error: cannot find symbol
            GetNum(int1, int2);

您想要的方法在类 ExampleMethod 中。它是附加到 ExampleMethod 类的静态方法,这意味着您无需实例化副本即可到达那里。相反,您可以这样做:

int result = ExampleMethod.GetNum(int1, int2);

具有静态方法的类围绕这些方法提供了一种命名空间,因此该类本身提供了足够的数据来解析您的方法。如果您有一个非静态方法,则需要执行以下操作:

ExampleMethod example = new ExampleMethod();
int result = example.GetNum(int1, int 2);

我希望这有帮助。

于 2012-10-31T15:24:06.393 回答
0

您可以将该GetNum()方法移动到 ClassTest 类中,或者您可以将GetNum()调用更改为ExampleMethod.GetNum(). 不知道为什么你有一个名为“ExampleMethod”的单独类;一般来说,您通常不需要定义一个新类来包含每个方法的定义。

于 2012-10-31T15:22:58.890 回答