Integer список Java
Я пытаюсь сделать java пройти через список чисел.
Он выбирает первый, дает это как выход, ждет/спит, как 2000 миллисекунд, а затем дает следующий в качестве вывода, ждет 2000 миллисекунд и т.д.
Они не должны перечисляться за каждой стороной, поэтому, когда мой список:
10
20
30
40
50
Он не должен давать в качестве вывода: 10 20 30 40 50.
Но всего 50.
Было бы еще лучше, если бы он смог повториться.
До сих пор я пытался:
List<Integer> myCoords = new ArrayList<Integer>();
myCoords.add(10);
myCoords.add(20);
myCoords.add(30);
myCoords.add(40);
myCoords.add(50);
Iterator<Integer> myListIterator = someList.iterator();
while (myListIterator.hasNext()) {
Integer coord = myListIterator.next();
}
Но у этого нет таймера, и я не уверен, что это будет показывать только "20" или "10 20 30 40 50".
И я действительно не знаю, как поставить команду sleep/wait и повторить команду: s (возможно, упустил команду повтора, если она уже включена)
Edit
Tyvm все, теперь я могу продолжить остальную кодировку:)
Ответы
Ответ 1
Если вы хотите переписать строку на консоли, напечатайте управляющий символ \r
(возврат каретки).
List<Integer> myCoords = new ArrayList<Integer>();
myCoords.add(10);
myCoords.add(20);
myCoords.add(30);
myCoords.add(40);
myCoords.add(50);
Iterator<Integer> myListIterator = myCoords.iterator();
while (myListIterator.hasNext()) {
Integer coord = myListIterator.next();
System.out.print("\r");
System.out.print(coord);
Thread.sleep(2000);
}
Ответ 2
который работает, но вывод:
10
20
30
40
50
так:
List<Integer> myCoords = new ArrayList<Integer>();
myCoords.add(10);
myCoords.add(20);
myCoords.add(30);
myCoords.add(40);
myCoords.add(50);
for (Integer number : myCoords) {
System.out.println(number);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Ответ 3
Чтобы вставить команду sleep, вы можете использовать Thread.sleep(2000). Таким образом, код будет выглядеть следующим образом:
List<Integer> myCoords = new ArrayList<Integer>();
myCoords.add(10);
myCoords.add(20);
myCoords.add(30);
myCoords.add(40);
myCoords.add(50);
Iterator<Integer> myListIterator = someList.iterator();
while (myListIterator.hasNext()) {
Integer coord = myListIterator.next();
System.out.println(coord);
Thread.Sleep(2000);
}
Это приведет к выводу:
10
20
30
40
50
Если вам нужны номера после друг друга, вы можете использовать: System.out.print(coord + ""); и если вы хотите повторить раздел, вы можете поместить его в другой цикл while.
List<Integer> myCoords = new ArrayList<Integer>();
myCoords.add(10);
myCoords.add(20);
myCoords.add(30);
myCoords.add(40);
myCoords.add(50);
while(true)
Iterator<Integer> myListIterator = someList.iterator();
while (myListIterator.hasNext()) {
Integer coord = myListIterator.next();
System.out.print(coord + " ");
Thread.Sleep(2000);
}
}
Это будет выводить: 10 20 30 40 50 10 20 30 40 50... и никогда не останавливаться, пока вы не убьете программу.
Изменить: вам нужно поставить команду sleep в блок catch try
Ответ 4
Значит, это будет:
List<Integer> myCoords = new ArrayList<Integer>();
myCoords.add(10);
myCoords.add(20);
myCoords.add(30);
myCoords.add(40);
myCoords.add(50);
while(true)
Iterator<Integer> myListIterator = myCoords.iterator();
while (myListIterator.hasNext()) {
Integer coord = myListIterator.next();
System.out.print("\r" + coord);
try{
Thread.sleep(2000);
}catch(Exception e){
// handle the exception...
}
}
}
Ответ 5
Давайте использовать некоторые функции Java 8:
IntStream.iterate(10, x -> x + 10).limit(5)
.forEach(System.out::println);
Если вам нужно сохранить номера, вы можете собрать их в коллекцию, например:
List numbers = IntStream.iterate(10, x -> x + 10).limit(5)
.boxed()
.collect(Collectors.toList());
И добавлена некоторая задержка:
IntStream.iterate(10, x -> x + 10).limit(5)
.forEach(x -> {
System.out.println(x);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// Do something with the exception
}
});