关于java:找不到符号

Cannot Find Symbol

本问题已经有最佳答案,请猛点这里访问。

我创建了一个小型Java应用程序来自动测试真/假条件下的一些表达式。

我在jgrasp和javac命令中都得到了两个编译器错误。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public class MathTest {
    public static void main(String[] args) {

        int x = 10;
        int y = 20;
        int z = 30;
        String string1 ="six";
        String string2 ="six";

        if (x < 10 || x > 10)
            System.out.print("True");
        else
            System.out.print("False");

        if (z - y == x && Math.abs(y - z) == z)
            System.out.print("True");
        else
            System.out.print("False");

        if (x < 10 && x < 10)
            System.out.print("True");
        else
            System.out.print("False");

        if (string1.equals(string2))
            System.out.print("True");
        else
            System.out.print("False");
        if (x > y || y > x)
            System.out.print("True");
        else
            System.out.print("False");

        if (!(x < y + z) || !(x + 10 <= 20))
            System.out.print("True");
        else
            System.out.print("False");

        if (string1 == string2)
            System.out.print("True");
        else
            System.out.print("False");

    }
}

错误消息为:

1
2
3
4
5
6
7
8
9
10
11
    MathTest.java:14: cannot find symbol
    symbol  : method abs(int)
    location: class Math
    if(z - y == x && Math.abs(y - z) == z)
                     ^
    ./Math.java:13: cannot find symbol
    symbol  : method abs(int)
    location: class Math
    if(z - y == x && Math.abs(y - z) == z)
                     ^
    2 errors

我做错什么了?

如果我的导师或盐湖社区学院的任何管理人员遇到这个问题的可能性不大,让我明确我的意图。这个问题是以学术诚信的最大精神提出的。我问这个问题,寻求通用的建议和帮助,了解正确的使用Java编程语言的方式。我决不利用别人的作品,把它表现为我自己的作品。我使用这里提供的答案作为理解的一般帮助。我做自己的工作,不抄袭回答我问题的人提供的工作。


您有一个数学类,您正试图使用abs()方法。

问题是:您是打算提供这个函数,还是打算使用java.lang.math中的函数?

首先,必须确保声明了该函数。

第二步,您必须确保使用正确的参数类型;请参见数学。

你的数学课有abs法吗?

似乎你的数学课在隐藏语言核心的数学课。

您的数学类已加载,找不到abs方法(因此"找不到符号"消息)


如果你希望你的程序使用Java的MATH.ABS(而不是在你编写的数学类中的一个Abess()方法,你可以说:

1
if(z - y == x && java.lang.Math.abs(y - z) == z)

…不太漂亮。一般来说,尽量不要将类命名为与java.lang(或java.anything,really)中的类相同的名称。


在编译器输出中,您有:

1
./Math.java:13: cannot find symbol

看起来你是在写你自己的Math类,它隐藏了java.lang.Math这个内置的类。

你必须要有一个自己的类叫Math?如果没有,只需删除Math.java并尝试再次编译。如果您确实需要Math.java,那么尝试将其重命名为其他名称(例如,在public class MyMath中定义了MyMath.java)。