【问题标题】:Math.random() in JavaJava 中的 Math.random()
【发布时间】:2013-07-03 23:36:45
【问题描述】:

我在同一个项目中有 2 个课程,我在这两个课程中都使用了 Math.random()。 首先一切正常,但在第二个它说random() 是未定义的。 "方法 random() 未定义数学类型"

有什么解决办法吗?

【问题讨论】:

  • 显示一些代码?你导入数学了吗?
  • 你有自己的数学课吗?
  • 我不认为该代码现在是相关的。但我一开始没有导入数学。我可以导入,但我想了解没有导入它是如何工作的......
  • Math 是 java.lang 的一部分,它是一个基础包。它不需要导入语句。
  • 您在哪个类中导入了Math 类,哪个类给您带来了错误?正如@MaxAlexander 所说,它默认包含在内,您不需要导入它。我假设您已经在给出该错误的类中的 Math 类上导入了您的实现。

标签: java math random


【解决方案1】:

你必须打电话

java.lang.Math.random() 因为你的类名也是 Math,所以你必须指定包。

例子:

public class Math {

    public static void main(String args []){
        System.out.println("JDK MATH RANDOM " +java.lang.Math.random()); // refers to java.lang
        System.out.println("My Math random implementation "+Math.random()); // refers to this class method, actually Math is redundant in this scope
    }

   public static double random(){
     //some implementation
   }

}

【讨论】:

  • 奇怪的例子。如果您不打算保存结果,调用该方法没有多大意义。
  • 我刚刚注意到 Math.random() 在我在同一个项目中创建另一个类后立即停止工作。谢谢!
  • @EJP 它只是一个引用 OP 的示例,是一个包问题,我展示了 2 个替代方案,我认为这是一个很好的例子来了解问题是什么,对于上面的评论,我认为它有效:)
  • 它什么也没做。在结果变量中编辑有多难?
  • @EJP 我编辑了,但我不同意我认为最后一个示例更好,因为它更清楚,现在有与理解包问题无关的代码..
【解决方案2】:

如果您有自己的类 Math,则必须在使用时明确您正在谈论的类,例如Java.lang.Math.random()。更简单的选择是更改类的名称。重用 JDK 中的名称是不好的做法,尤其是 java.lang 包中的名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-07
    • 2014-12-03
    相关资源
    最近更新 更多