Java 应用程序在给定大数字时崩溃

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

我创建了一个应用程序,它在2个给定值之间生成随机数,并且工作正常。它是按照它所说的做的,但是如果我在最大值(或最小值)中输入了11位数字,应用程序崩溃了。我该如何修复它?还有另一种生成随机数的方法来支持大值吗?这里是代码

        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


如果需要更高的值,请使用long

int的最大值为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)。如果它是一个函数,那么检查它是否返回长值?