#java #android-studio
#java #android-studio
Вопрос:
Я создаю приложение, в котором отображается случайный набор чисел. И вот мой вопрос, потому что мой код выглядит так:
tv1 = (TextView) findViewById(R.id.textView);
btn1 = (Button) findViewById(R.id.button);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final java.util.Random rand = java.util.concurrent.ThreadLocalRandom.current();
new java.util.Timer().scheduleAtFixedRate(new java.util.TimerTask() {
@Override
public void run() {
tv1.setText(rand.nextInt(6) "-" rand.nextInt(6) "-" rand.nextInt(6));
}
}, 0, 3000);
}
});
}
}
Возможно ли, что приложение вместо чисел от 6 до 0 будет принимать готовые наборы чисел, которые я создаю?
Комментарии:
1. например. (1-2-3, 1-3-5, 1-5-6). что-то вроде этого, этот код иногда показывает мне нежелательные комбинации
2. Нет, нет . Я имею в виду, что иногда приложение показывает мне (3-5-4 или 5-6-6), и я не хочу, чтобы эти типы комбинаций отображались на экране
3. Эти последовательности отображаются в случайных последовательностях. Их удаление сделало бы последовательности менее случайными.
Ответ №1:
Реализуйте приведенный ниже метод внутри вашего класса activity, и вы можете использовать его для достижения ваших требований:
// To get the numbers from 0 to 6 use upperBound as 7.
private static String getResult(int lowerBound, int upperBound){
final ThreadLocalRandom rand = ThreadLocalRandom.current();
List<Integer> list = new ArrayList<Integer>();
int number;
for(int counter = 0; counter < 3;counter ){
number = rand.nextInt(lowerBound, upperBound);
while(list.contains(number)) {
number = rand.nextInt(lowerBound, upperBound);
}
list.add(number);
}
Collections.sort(list); //Sorts the list
return list.get(0) "-" list.get(1) "-" list.get(2);
}
В вашем TextView tv1
внутри run()
метода; просто вызовите этот метод, что-то вроде:
tv1.setText(getResult(0, 7)); // Remember in the sequence; 0 is inclusive and 7 is exclusive.
Вы можете увидеть пример запуска здесь.
Комментарии:
1. можно ли создать папку, ввести туда свои цифровые последовательности, и приложение возьмет оттуда то, что нужно рандомизировать?
2. Не совсем так. Я хочу создать в Android Studio что-то вроде папки с номерами, которые я хочу показать на дисплее. Например, я создаю папку с номерами (1, 4, 534, 94,) и приложение будет разыгрывать жребий только по этим номерам
3. Я не понимаю ;/
Ответ №2:
Если вы хотите извлекать случайные числа из a List
, вы можете использовать rand.nextInt(list.size())
для получения случайного индекса для извлечения числа, поскольку аргумент верхней границы for nextInt
является эксклюзивным.
final java.util.List<Integer> numbers = java.util.Arrays.asList(1, 4, 534, 94);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final java.util.Random rand = java.util.concurrent.ThreadLocalRandom.current();
new java.util.Timer().scheduleAtFixedRate(new java.util.TimerTask() {
@Override
public void run() {
tv1.setText(numbers.get(rand.nextInt(numbers.size())) "-" numbers.get(rand.nextInt(numbers.size())) "-" numbers.get(rand.nextInt(numbers.size()));
}
}, 0, 3000);
}
});
}
}