我对 Java 非常陌生,正在开发我的第一个 Android 应用程序。我使用 webview 演示作为模板。我试图生成一个 1 到 12 之间的随机整数,然后根据结果调用某个 javascript 函数。这是我所拥有的:
int number = 1 + (int)(Math.random() * ((12 - 1) + 1));
number = (int) Math.floor(number);
String nextQuote = "javascript:wave" + number + "()";
mWebView.loadUrl(nextQuote);
因此 mWebView.loadUrl(nextQuote)
将与 mWebView.loadUrl("javascript:wave1()")
我只是想知道我这里的内容是否正确并且会按照我想象的方式工作。该应用程序没有按预期响应,我怀疑这段代码是罪魁祸首。
最佳答案
关键语句如下:
int number = 1 + (int)(Math.random() * ((12 - 1) + 1));
number = (int) Math.floor(number);
第一个语句给出了您需要的答案,但方式相当麻烦。让我们逐步了解发生了什么:
((12 - 1) + 1)
是12
。 (这是在编译时评估的...)Math.random()
给出double
在0.0D <= rd < 1.0D
范围内.Math.random() * 12
给出double
在0.0D <= rd < 12.0D
范围内.(int)
强制转换double
到int
通过向零舍入。换句话说(int)(Math.random() * 12)
将是0 <= ri <= 11
范围内的整数.最后你添加
1
给出1 <= ri <= 12
范围内的整数.
W**5
:-)
更简单、更清晰的版本是:
private static Random rand = new Random();
...
int number = 1 + rand.nextInt(12);
第二个语句(据我所知)是一个空操作。它隐式转换 int
到 double
,得到double
小于或等于 double
的最大整数形式,并将其转换回 int
。结果将始终与原始 int
相同。
关于java - 在java中生成函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3027218/