Java 应用程序在给定大数字时崩溃
我创建了一个应用程序,它在2个给定值之间生成随机数,并且工作正常。它是按照它所说的做的,但是如果我在最大值(或最小值)中输入了11位数字,应用程序崩溃了。我该如何修复它?还有另一种生成随机数的方法来支持大值吗?这里是代码Java 应用程序在给定大数字时崩溃,java,android,long-integer,Java,Android,Long Integer,我创建了一个应用程序,它在2个给定值之间生成随机数,并且工作正常。它是按照它所说的做的,但是如果我在最大值(或最小值)中输入了11位数字,应用程序崩溃了。我该如何修复它?还有另一种生成随机数的方法来支持大值吗?这里是代码 Button gen = (Button)findViewById(R.id.button); final EditText mini = (EditText)findViewById(R.id.mini); final Edit
Button gen = (Button)findViewById(R.id.button);
final EditText mini = (EditText)findViewById(R.id.mini);
final EditText maxi = (EditText)findViewById(R.id.maxi);
final TextView res = (TextView)findViewById(R.id.result);
final Random r = new Random();
final int[] number = {0};
gen.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int minn = Integer.parseInt(mini.getText().toString());
int maxx = Integer.parseInt(maxi.getText().toString());
if (minn>=maxx){
maxi.setText(String.valueOf(minn));
mini.setText(String.valueOf(maxx));
maxx = Integer.parseInt(maxi.getText().toString());
minn = Integer.parseInt(mini.getText().toString());
number[0] = minn + r.nextInt(maxx - minn + 1);
res.setText(String.valueOf(number[0]));
}else{
number[0] = minn + r.nextInt(maxx - minn + 1);
res.setText(String.valueOf(number[0]));
}
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
}
});
}
这是因为Integer类不支持那么大的值。尝试使用long或float。这应该行得通。发生这种情况是因为Integer类不支持那么大的值。尝试使用long或float。应该可以。int的最大值是2147483647
如果需要更高的值,请使用longint的最大值为2147483647
使用long如果需要更高的值则必须使用long或double而不是Integer。因为Integer不支持那么大的值
long minn = Long.parseInt(mini.getText().toString());
long maxx = Long.parseInt(maxi.getText().toString());
或
必须使用long或double而不是Integer。因为Integer不支持那么大的值
long minn = Long.parseInt(mini.getText().toString());
long maxx = Long.parseInt(maxi.getText().toString());
或
如果你想对非常大的数字进行运算,请改用BigInteger。Integer不能处理大的数字,这就是它失败的原因。如果你想对非常大的数字进行运算,改为使用BigInteger。Integer不能处理大的数字,这就是它失败的原因。将minn和maxx变量设置为long 整数:
- 最大值=2147483647
- 最小值=-2147483648
- 最大值=9223372036854775807
- 最小值=-9223372036854775808
将minn和maxx变量设置为long 整数:
- 最大值=2147483647
- 最小值=-2147483648
- 最大值=9223372036854775807
- 最小值=-9223372036854775808
使用double或long代替整数。这与
admob有什么关系?
?你的两个问题完全无关。不要把它们混在一个帖子里。此外,ads问题与SO无关。请使用double或long而不是Integer。这与admob
有什么关系?您的两个问题完全无关。不要把它们混在一个帖子里。此外,对于SO.number[0]=minn+r.nextLong(maxx-minn+1);-->Random中的nextLong()不能应用于nextLong()的(long)。如果它是一个函数,那么检查它是否返回长值?数字[0]=minn+r.nextLong(maxx-minn+1);-->Random中的nextLong()不能应用于nextLong()的(long)。如果它是一个函数,那么检查它是否返回长值?