Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android-生成随机数时崩溃_Java_Android_Random_Runtime Error - Fatal编程技术网

Java Android-生成随机数时崩溃

Java Android-生成随机数时崩溃,java,android,random,runtime-error,Java,Android,Random,Runtime Error,因此,我在其他地方研究了如何生成一个随机数,并将其放入Android应用程序。我希望这能起作用,但遗憾的是,它与此日志发生了冲突: 11-03 17:06:48.930: W/dalvikvm(8327): threadid=1: thread exiting with uncaught exception (group=0x41ff0300) 11-03 17:06:48.938: E/AndroidRuntime(8327): FATAL EXCEPTION: main 11-03 17:0

因此,我在其他地方研究了如何生成一个随机数,并将其放入Android应用程序。我希望这能起作用,但遗憾的是,它与此日志发生了冲突:

11-03 17:06:48.930: W/dalvikvm(8327): threadid=1: thread exiting with uncaught exception (group=0x41ff0300)
11-03 17:06:48.938: E/AndroidRuntime(8327): FATAL EXCEPTION: main
11-03 17:06:48.938: E/AndroidRuntime(8327): java.lang.IllegalArgumentException
11-03 17:06:48.938: E/AndroidRuntime(8327):     at java.util.Random.nextInt(Random.java:187)
11-03 17:06:48.938: E/AndroidRuntime(8327):     at com.spng453.randomnum.RandomNumber$1.onClick(RandomNumber.java:24)
11-03 17:06:48.938: E/AndroidRuntime(8327):     at android.view.View.performClick(View.java:4084)
11-03 17:06:48.938: E/AndroidRuntime(8327):     at android.view.View$PerformClick.run(View.java:16966)
11-03 17:06:48.938: E/AndroidRuntime(8327):     at android.os.Handler.handleCallback(Handler.java:615)
11-03 17:06:48.938: E/AndroidRuntime(8327):     at android.os.Handler.dispatchMessage(Handler.java:92)
11-03 17:06:48.938: E/AndroidRuntime(8327):     at android.os.Looper.loop(Looper.java:137)
11-03 17:06:48.938: E/AndroidRuntime(8327):     at android.app.ActivityThread.main(ActivityThread.java:4745)
11-03 17:06:48.938: E/AndroidRuntime(8327):     at java.lang.reflect.Method.invokeNative(Native Method)
11-03 17:06:48.938: E/AndroidRuntime(8327):     at java.lang.reflect.Method.invoke(Method.java:511)
11-03 17:06:48.938: E/AndroidRuntime(8327):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
11-03 17:06:48.938: E/AndroidRuntime(8327):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
11-03 17:06:48.938: E/AndroidRuntime(8327):     at dalvik.system.NativeStart.main(Native Method)
11-03 17:06:51.376: I/Process(8327): Sending signal. PID: 8327 SIG: 9
我已经想尽一切办法让它发挥作用,但没有任何效果。代码如下:

private OnClickListener Gen = new OnClickListener() {
    public void onClick(View v) {
        Random rand;
        rand = new Random();
        EditText maxin = (EditText)findViewById(R.id.max);
        EditText minin = (EditText)findViewById(R.id.min);
        TextView out = (TextView)findViewById(R.id.out);
        int max = Integer.parseInt(maxin.getText().toString().trim());
        int min = Integer.parseInt(minin.getText().toString().trim());
        out.setText(Integer.toString(rand.nextInt(max-min) + min));
    }
};

如果
max
文本框中的数字小于或等于
min
文本框,则肯定会发生这种情况。你应该在打电话之前验证一下。正如文件所述:

抛出:
IllegalArgumentException-如果n不是正的

当然,您还应该处理文本框中根本没有有效数字的情况

最后,您有什么理由要将
rand
的声明和赋值分开吗

Random rand;
rand = new Random();
为什么不只是:

Random rand = new Random();

java.lang.IllegalArgumentException
表示您正在向
nextInt()函数传递非法参数。我猜你的论点不是零,或者类似的。在调试器中检查这些值以确保参数有效。

好的,我来看看。谢谢编辑:谢谢!我不知道,但我把两个文本框切换了。最后我总是犯这样愚蠢的错误。而且,我不仅仅是为了Random rand=new Random();因为我认为这可能是问题所在。最后,文本框是数字文本框,如果我想找到一种输入字母的方法,那么我会添加一个字母检查功能。@spng453:声明怎么可能有问题?听起来,您需要后退一步,并在出现问题时查看错误消息和堆栈跟踪。另外,如果文本框只允许数字,为什么要修剪字符串?如果用户输入了一个不能存储在
int
中的数字,会发生什么?哦,是的,你说得对。如果他们输入小数点,它仍然会出错。而且,我知道错误并不是那样的,但我只是试着做每件事以防万一,我只是忘了按原样放回去。另外,对于修剪,我只是习惯于使用带有字符串的文本框,有点习惯,我没有意识到。