2016-04-09 13 views
0

Ich versuche, einfachen Code zu schreiben, der es dem Benutzer ermöglicht, maximale Anzahl für zufälliges commend in einer Aktivität zu wählen und es in einer anderen Aktivität zu verwenden. (Die min ist 1)So setzen Sie zufällige max, die der Benutzer wählen

Ich konnte die int-Variable von Aktivität A zu Aktivität B aufrufen, aber wenn ich versuche, es in der zufälligen Empfehlung zu verwenden, stürzt die App ab.

Hier nenne ich für den int:

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

und legte in dem Zufall:

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

Ich habe bereits, dass der int wirklich auf eine Zahl gleich höher als die defualt - 0.

Hier ist, was ich dick ist der wichtige Teil der Stapelfluss:

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) 

Linie 148 ist, wo ich mainNum gesetzt und die Leitung 40 ist auf der onCreate Klasse, wo ich für die Zufalls Klasse aufrufen.

Vielen Dank! Hier sind seine tatsächlichen Codezeilen aus der Android-Plattform-API-Ebene

+6

Was ist die Stapelspur des Absturzes? Das ist immer wichtig zu wissen. –

+0

Wo setzt du das Extra "highNum" in Activity-A? – Yazan

Antwort

0

Der Stack-Trace wird Ihnen sagen, dass die Zahl, die Sie in Random.nextInt() bestanden tatsächlich 0. 23:

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

Sie können sehen, dass die Nachricht Einfügen des Werts von n in die Ausnahmefehlermeldung. Dies entspricht dem Wert Ihrer HighNum.

Überprüfen Sie Ihren Wert von highNum kurz bevor es in diese Methode übergeben wird.

0

Diese Ausnahme ist, weil Sie versuchen, eine Zufallszahl zu erzeugen, aber Sie sind die Validierung nicht die gebunden als Parameter übergeben **:

hier:

mainNum = random.nextInt(highNum) + 1; 

es passiert zu sein dass die Variable highNum positiv sein muss

Lösung:

validieren die Variable highNum vor seinem Wert der Methode nextInt vorbei:

als etwas so einfach tun:

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

Wenn Sie es brauchen, werfen Sie einen Blick auf die offizielle Documentation:

Parameter: Begrenzt die obere Grenze (exklusiv). Muss positiv sein.

Verwandte Themen