2014-02-14 6 views
1

Я создал приложение, которое генерирует случайное число между двумя заданными значениями, и его работа хорошая, он дозирует то, что он говорит, но если я введу 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); 
      } 
     }); 
} 
+0

Используйте двойной или длинный вместо Integer. – InnocentKiller

+0

Что это связано с 'admob'? –

+0

Ваши два вопроса абсолютно не связаны. Не смешивайте их в одном посте. Кроме того, вопрос о рекламе отключен для SO. – Henry

ответ

2

Вы должны использовать длинные или двойной вместо Integer. Поскольку Integer не поддерживает такое большое значение.

long minn = Long.parseInt(mini.getText().toString()); 
      long maxx = Long.parseInt(maxi.getText().toString()); 

или

double minn = Double.parseInt(mini.getText().toString()); 
       double maxx = Double.parseInt(maxi.getText().toString()); 
+0

номер [0] = minn + r.nextLong (maxx - minn + 1); ---> nextLong() in Random не применимо до (длинный) – smaika

+0

что дальшеLong(). Если это функция, то проверьте, что она возвращает значение long или нет? – InnocentKiller

1

Это происходя потому, что класс Integer не поддерживает значения, что большое. Попробуйте использовать Longs или Floats. Это должно сработать.

1

Максимальное значение ИНТ 2147483647

использование долго, если вам нужно более высокие значения

0

Если вы хотите работать на очень большие числа, использовать BigInteger instead.Integer не может обрабатывать большие числа, и это причина, почему он терпит неудачу для вас.

Смежные вопросы