このStackOverFlowエラーが発生しましたが、完全に理解していますが、大きなデータを扱っていないという問題があります。stack = java.lang.StackOverflowError:スタックサイズ8MB
私は、Framelayoutの断片、3つのオプションを持っています。
これらのオプションの1つをクリックすると、フラグメントが再作成され、乱数が入力されます.MAXは15
です。その大きさではないため、このエラーは、このオーバーフローを引き起こすオプション。
これは「強化」するためのアイデアを生成するためのコードですか?私はこのコードがmomeryを使用するための悪い習慣であるかどうかわかりません。
private static List<Integer> SavedNumbers;
public static void SetupSavedNumbersLIst(){
SavedNumbers = new ArrayList<>();
}
static List<Integer> range;
private static void AddDiff(int mMAX){
range = new ArrayList<>();
for(int i = 0 ; i < mMAX ; i++){
range.add(i);
}
range.removeAll(SavedNumbers);
}
private static int ReturnIfDuplic(int mMAX){
AddDiff(mMAX);
return new Random().nextInt(range.size());
}
public static int ReturnUniqueSavedNumber(int mMAX){
int Random = ReturnRandom(mMAX);
if(SavedNumbers != null && SavedNumbers.size() > 0) {
if(DoesSavedNumberExist(Random)){
return ReturnIfDuplic(mMAX);
} else {
SavedNumbers.add(Random);
return Random;
}
} else if (SavedNumbers != null && SavedNumbers.size() == 0){
SavedNumbers.add(Random);
return Random;
} else if(SavedNumbers == null){
SetupSavedNumbersLIst();
return ReturnUniqueSavedNumber(mMAX);
} else {
return 1;
}
}
private static boolean DoesSavedNumberExist(int Number){
for(int s: SavedNumbers){
if(Number == s)
return true;
}
return false;
}
private static int ReturnRandom(int mMAX){
return new Random().nextInt(mMAX);
}
...新しいRandom()。nextInt()は永遠の命のために同じ番号を生成する可能性があります...必要なintのリストを作成してシャッフルしてくださいhttp://ideone.com/ XJRRba – Selvin
コードから、私は重複のない範囲で乱数を生成するための代替アプローチとして見ることができます。このメソッド(乱数を生成する)はフラグメントの再作成ごとに呼び出されるので、呼び出されるたびに乱数が1つだけ生成されることに注意してください。 – Jaeger
ここでは、すべての数値シーケンスを一度に生成し、次に選択するだけで、いつでもシーケンス「 – Selvin