【问题标题】:Cannot Find Symbol [duplicate]找不到符号[重复]
【发布时间】:2010-10-12 13:18:15
【问题描述】:

我创建了一个小型 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:找不到符号 符号:方法 abs(int) 地点:数学课 if(z - y == x && Math.abs(y - z) == z) ^ ./Math.java:13:找不到符号 符号:方法 abs(int) 地点:数学课 if(z - y == x && Math.abs(y - z) == z) ^ 2 个错误

我做错了什么?

万一我的讲师或盐湖社区学院的任何管理员遇到这个问题,请让我明确表达我的意图。这个问题是本着学术诚信的最大精神发布的。我问这个问题是为了寻求一般建议和帮助,以了解使用 Java 编程语言的正确方法。我绝不会使用他人的作品并将其视为我自己的作品。我使用此处提供的答案作为我理解的一般帮助。我自己完成所有工作,不会复制回答我问题的人提供的工作。

【问题讨论】:

  • 一般来说,使用括号总比不使用要好。更喜欢 if(){ ... } else { ... } 而不是 if() .. else ...

标签: java


【解决方案1】:

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

问题是:您是打算提供此功能还是尝试在 java.lang.Math 中使用该功能?

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

其次,您必须确保使用正确的参数类型;见Math

你的数学课有 abs 方法吗?

您的 Math 课程似乎正在掩盖语言核心中的 Math 课程。

您的 Math 类已加载,但找不到 abs 方法(因此出现“找不到符号”消息)

【讨论】:

  • 我打算使用 java.lang 中内置的 Math 类。
【解决方案2】:

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

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

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

【讨论】:

  • 我打算使用 java.lang 中内置的 Math 类。我相信我不小心调用了一个我没有创建的类,而不是调用 java.lang.Math。当我进行更改时,错误消失了。谢谢。
【解决方案3】:

在您的编译器输出中,您有:

./Math.java:13: cannot find symbol

看起来您正在尝试编写自己的 Math 类,并且它隐藏了内置的 java.lang.Math

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

【讨论】:

  • 我并不是要创建自己的数学课。当我使用完全限定的类名时,错误消失了。
  • 不错。不知道它在哪里得到 Math.java,但祝你的项目好运!
猜你喜欢
  • 2019-05-31
  • 2015-06-07
  • 2020-06-13
  • 2012-09-09
  • 2011-10-29
  • 2015-12-15
  • 1970-01-01
相关资源
最近更新 更多