Java integer lijst

Ik probeer Java door een lijst met nummers te laten gaan.
Het kiest de eerste, geeft deze als output, wacht/slaapt als 2000 milliseconden en geeft dan de volgende als output, wacht 2000 milliseconden, enz.

Ze mogen niet achter elkaar worden vermeld, dus als mijn lijst is:
10
20
30
40
50

Het zou niet als output moeten geven: 10 20 30 40 50.
Maar slechts 50.

Het zou nog beter zijn als het zichzelf zou kunnen herhalen.

Tot nu toe heb ik geprobeerd:

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();     
}

Maar dit heeft geen timer, en ik weet niet zeker of dit alleen ’20’ of ’10 20 30 40 50′ als uitvoer zal tonen.
En ik weet niet echt hoe ik een slaap / wacht-commando en een herhaalcommando hierin moet plaatsen: s (misschien heb ik het herhaalcommando over het hoofd gezien als het al in is)

Bewerken
Tyvm allemaal, ik kan nu doorgaan met de rest van het coderen 🙂


Antwoord 1, autoriteit 100%

Als u een regel op de console wilt herschrijven, drukt u een controleteken \r(carriage return) af.

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);
}

Antwoord 2, autoriteit 8%

code die werkt, maar de uitvoer is:

10
20
30
40
50

dus:

   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();
        }
    }

Antwoord 3, autoriteit 4%

Om een ​​slaapcommando in te voegen kun je Thread.sleep(2000) gebruiken. Dus de code zou zijn:

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);
}

Dit zou het volgende opleveren:
10
20
30
40
50

Als u de cijfers achter elkaar wilt, kunt u het volgende gebruiken: System.out.print(coord +” ” ); en als je de sectie wilt herhalen, kun je deze in een andere while-lus plaatsen.

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);
    }
}

Dit zou resulteren in: 10 20 30 40 50 10 20 30 40 50 … en nooit stoppen totdat je het programma afsluit.

Bewerken: je moet het slaapcommando wel in een try catch-blok plaatsen


Antwoord 4, autoriteit 4%

Laten we een Java 8-functie gebruiken:

IntStream.iterate(10, x -> x + 10).limit(5)
  .forEach(System.out::println);

Als u de nummers moet opslaan, kunt u ze in een verzameling verzamelen, bijvoorbeeld:

List numbers = IntStream.iterate(10, x -> x + 10).limit(5)
  .boxed()
  .collect(Collectors.toList());

En wat vertraging toegevoegd:

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
    }  
  });

Antwoord 5

Dus het zou worden:

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...
  }
    }
}

LEAVE A REPLY

Please enter your comment!
Please enter your name here

3 + ten =

Other episodes