2016-04-09 19 views
0

'u seçtiği rasgele maksimum nasıl ayarlanır Kullanıcıya, bir etkinlikte en fazla rasgele ödevi seçmesine ve başka bir etkinlikte kullanmasına izin veren basit bir kod yazmaya çalışıyorum. (Min, 1'dir)Kullanıcı

A değişkenini etkinlik B'den etkinlik B'ye int değişkeni aramayı başardım ancak uygulamayı rastgele ötelemede kullanmaya çalıştığımda uygulama çöküyor. İşte

ben int için çağrı:

Intent intent = getIntent(); 
highNum = intent.getIntExtra("highNum", 0); 

Ve rastgele koymak: Zaten int gerçekten Varsylan daha yüksek bir sayıya eşit olduğunu kontrol

Random random = new Random(); 
mainNum = random.nextInt(highNum) + 1; 

- 0'a

Yığın akışının önemli bir kısmı kalın olan şudur:

0 0 Ben mainNum set nerede
Caused by: java.lang.IllegalArgumentException: n <= 0: 0 
at java.util.Random.nextInt(Random.java:182) 
at com.appstudio.shirdn.sevenboom.MainActivity.randomNumber(MainActivity.java:148) 
at com.appstudio.shirdn.sevenboom.MainActivity.onCreate(MainActivity.java:40) 

Hattı 148 ve hat 40 rastgele sınıf için çağrı onCreate sınıfına üzerindedir.

Teşekkür ederiz!

public int nextInt(int n) { 
    if (n <= 0) { 
     throw new IllegalArgumentException("n <= 0: " + n); 
    } 
    ... 
} 

Sen mesajı olduğunu görebilirsiniz:

+6

Çarpışmanın yığın izi nedir? Bu bilmek her zaman önemlidir. –

+0

Etkinlik-A'daki fazladan "highNum" özelliğini nereye koyarsınız? – Yazan

cevap

0

yığın izleme Eğer Random.nextInt() geçirilen 23 numara Android platformu API seviyesinden kod gerçek hatlarıdır İşte aslında 0. olduğunu size anlatıyor n değerinin istisna hata mesajına eklenmesi. Bu, highNum değerinize karşılık gelir.

Bu yönteme geçilmeden önce highNum değerinizi kontrol edin. Burada

:

mainNum = random.nextInt(highNum) + 1; 

o olur rastgele bir sayı oluşturmak için çalışıyoruz ancak parametre ** olarak geçirilen bağlı doğrulayarak değildir çünkü

0

Bu istisna değildir değişken highNum pozitif olması gerektiğini

Çözüm:

:

if (highNum > 0) { 
    mainNum = random.nextInt(highNum) + 1; 
} 

Eğer gerekirse, resmi Documentation için bir göz atın:

kadar basit bir şey yapmak: nextInt yöntemine değerini geçirmeden önce değişken highNum doğrulamak

parametreleri: üst sınırı bağlı (seçkin). Olumlu olmalı.