java - 在java中生成函数参数

标签 java android

我对 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);

第一个语句给出了您需要的答案,但方式相当麻烦。让我们逐步了解发生了什么:

  1. ((12 - 1) + 1)12 。 (这是在编译时评估的...)

  2. Math.random()给出 double0.0D <= rd < 1.0D 范围内.

  3. Math.random() * 12给出 double0.0D <= rd < 12.0D 范围内.

  4. (int)强制转换 doubleint通过向零舍入。换句话说(int)(Math.random() * 12)将是 0 <= ri <= 11 范围内的整数.

  5. 最后你添加 1给出 1 <= ri <= 12 范围内的整数.

W**5 :-)

更简单、更清晰的版本是:

private static Random rand = new Random();
...
int number = 1 + rand.nextInt(12);

第二个语句(据我所知)是一个空操作。它隐式转换 intdouble ,得到double小于或等于 double 的最大整数形式,并将其转换回 int 。结果将始终与原始 int 相同。

关于java - 在java中生成函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3027218/

相关文章:

java - 执行查找时无法实例化类 : com. sun.enterprise.naming.SerialInitContextFactory

java.text.ParseException : Unparseable date: "" (at offset 0) error for timepickerdialog 异常

java - 对于 contains 我们是否应该覆盖 java 中 hashset 的 hashcode 和 equals

java - 共享文件和文本

java - 我无法更改我的 selectOneMenu

java - 何时使用 Array、Buffer 或直接 Buffer

java - 如何通过ListAdpter显示多张图片?

java - SQLite数据库读取错误 'no such file or directory '

Android 模拟器有时显示 "Storage space running out",使 APK 安装时 adb 挂起

android - 进度条和 webview 问题