找不到标志

时间:2009-03-10 21:32:11

标签: java

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

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

代码如下:

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

    }
}

错误消息是:

    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编程语言的正确方法。我绝不会使用他人的作品,而是把它当作我自己的作品。我使用这里提供的答案作为我理解的一般帮助。我做自己的所有工作,不要复制回答我问题的人提供的工作。

3 个答案:

答案 0 :(得分:6)

你有一个Math类,并且你正在尝试使用abs()方法。

问题是:你打算提供这个函数还是试图在java.lang.Math中使用它?

首先,你必须确保你宣布这个功能。

对于第二个,您必须确保使用正确的参数类型;见Math

您的Math类是否具有abs方法?

看起来你的Math类正在影响该语言核心的Math类。

您的Math类已加载且无法找到abs方法(因此“无法找到符号”消息)

答案 1 :(得分:5)

如果您希望程序使用Java的Math.abs(而不是您编写的Math类中的abs()方法),您可以说:

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

......这不是很漂亮。一般来说,尽量不要将类命名为java.lang(或者java.anything,真的)中的类。

答案 2 :(得分:3)

在编译器输出中,您有:

./Math.java:13: cannot find symbol

看起来你正在尝试编写自己的Math类,并且它是内置的java.lang.Math阴影。

您是否必须拥有自己的一个名为Math的课程?如果没有,那么只需删除Math.java并尝试再次编译。如果您执行需要Math.java,请尝试将其重命名为其他内容(例如,MyMath.java,其中定义了public class MyMath