Math.random 无法在 jGrasp 中编译

Math.random won't compile in jGrasp

提问人:ghostsushi 提问时间:9/19/2023 最后编辑:John Kugelmanghostsushi 更新时间:9/20/2023 访问量:68

问:

当我尝试在代码中使用 Math.random 时,我得到“错误:找不到符号”并指向 Math 和 random 之间的“.”。但是,当我在 programiz.com 上将代码重写为在线编译器时,它可以正常工作。这是我拥有的代码。

public class RandomMath {
   public static void main(String[] args) {
   
   int firstNum = 1;
   int lastNum = 3;
   
   // generates a random number between 0 to 1
   System.out.println(firstNum + Math.random()); 

   }
}

我尝试在不带任何其他东西的情况下编写代码,只有 Math.random。它仍然说“.”是一个找不到的符号。

Java 数学 随机 编译器错误 符号

评论

2赞 MarsAtomic 9/19/2023
您不必显式导入 Math,因为它是 java.lang 包的一部分,但由于此代码在 JGrasp 中失败,我猜您遇到了特定于 JGrasp 的错误(该代码对我来说使用 OpenJDK 和 Atom 编辑器工作正常)。虽然我没有解决方案,但我有一个解决方法:无论您在哪里调用,都可以使用完全限定的名称。我还鼓励您针对 JGrasp 提交一个错误,但他们似乎没有公开可见的错误库,甚至没有用户论坛。Math.random()java.lang.Math.random()
0赞 Farhad Enayati 9/19/2023
我使用的是 Java 8,但没有看到任何错误消息
1赞 davidalayachew 9/19/2023
发布jGRASP给你的确切错误。具体来说,将其编辑到您的帖子中。
1赞 lbarowski 9/20/2023
虽然我们没有公开可见的错误数据库或论坛,但我们确实会快速响应错误报告——通常是在同一天,即使是那些看似用户错误的错误。jGRASP本身有一个“报告错误”功能,以及自动报告(经用户批准)未捕获的异常。如果存在影响大量用户的问题(病毒扫描程序误报、新 Java 版本中的错误等),我们通常会在主页上注明这些问题。
0赞 ghostsushi 9/20/2023
@davidalayachew。这是我收到的错误代码。我用一个新名字创建了一个新文件,因为我的教授很伤心,因为我的文件名是数学,这导致了问题。----jGRASP exec: javac -g hilo.java hilo.java:6: 错误: 找不到符号 System.out.println(Math.random());^ symbol: method random() location: class Math 1 error ----jGRASP wedge: exit code for process is 1.----jGRASP:操作完成。

答:

1赞 lbarowski 9/20/2023 #1

最有可能的是,您在同一目录中有自己名为“Math”的类,因此对“Math”的任何非限定引用都是对该类的引用。将自己的类命名为与常用的 JDK 类相同的类通常是一个坏主意,但如果你这样做,那么你可以完全按照上面的建议“java.lang.Math.random()”进行限定,或者你可以导入 java.lang.Math(但如果你这样做,并且你自己的“Math”类在默认包中,那么如果你需要的话,将无法访问你自己的“Math”类)。

此外,javac 错误将有一个指向点的插入符号 ^,但在其下方您应该看到“symbol: method random()”。