私は1と12の間のランダムを作りようとしていますが、結果はすでに否定的であり、それは私にアプリの停止をさせます。Android Randomは否定的な結果になります。どのように修正するのですか?
これは私のコードです:
public class PlacementPerso extends AireDeJeu{
private boolean trou1, trou2, trou3, trou4, trou5, trou6, trou7, trou8, trou9, trou10, trou11, trou12;
private Random r = new Random();
private int random, baseMax, baseMin;
public void PlacementPerso(){
trou1 = true; trou2 = true; trou3 = true; trou4 = true; trou5 = true; trou6 = true; trou7 = true; trou8 = true; trou9 = true; trou10 = true; trou11 = true; trou12 = true;
random = 1; baseMax = 1; baseMin = 12;
}
public void aPlacer(Perso pPerso){
final int ressource = pPerso.getRessource();
//This is the crash line
random = r.nextInt((baseMax - baseMin) + 1) + baseMin;
/**
*
* AND MORE ....
*
*/
、呼び出し元:
public class GenerateurPartie extends GenerateurPerso{
private int mNiveau;
public static int mAvancement = 0;
private int mDelai;
private Thread mThread;
private Perso mPerso;
private final HandlerDelai handlerDelai = new HandlerDelai();
protected static PlacementPerso mPlacementPerso = new PlacementPerso();
public GenerateurPartie(int pNiveau) {
this.mNiveau = pNiveau;
this.mDelai = 2500;
mPlacementPerso.PlacementPerso();
mThread = new Thread(new Runnable() {
@Override
public void run() {
try {
int i = 0;
while (mAvancement < 100) {
i += 1;
if (mAvancement >= 80)
mDelai = mDelai/2;
Thread.sleep(mDelai);
handlerDelai.postDelayed(new Runnable() {
@Override
public void run() {
mPerso = GenerateurPerso(mNiveau, mAvancement);
mPlacementPerso.aPlacer(mPerso);
}
}, mDelai);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}});
mThread.start();
}
}
私はすでにStackOverflowの上でいくつかのスレッドを読んで、彼らが行うことをお勧め何しようと試みたが、何も私の問題を解決しませんしました。 私は "random = 1;"のままにしようとしました。私のクラス "PlacementPerso"では、しかし方法はすでに同じです。
これは私のログです:
10-07 10:42:17.885 490-490/com.dunomade.ecraseurdetaupe E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.dunomade.ecraseurdetaupe, PID: 490
java.lang.IllegalArgumentException: n <= 0: -10
at java.util.Random.nextInt(Random.java:182)
at com.dunomade.ecraseurdetaupe.PlacementPerso.aPlacer(PlacementPerso.java:27)
at com.dunomade.ecraseurdetaupe.GenerateurPartie$1$1.run(GenerateurPartie.java:56)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:5728)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
たぶん誰かがそれを解決する方法を知っています。なぜ私の結果が既に< = 0であるのか分かりません。 ありがとうございます=)
最大値と最小値を反転したようですか?最大は1、最小は12です。 –
ありがとうございました!!!!それは問題だった=)私は盲目だった... – LeNomade