2016-07-07 29 views
-3

Angenommen, ich habe Ziffern zwischen 1 und 5, ich möchte zwischen dem einfachen Schleife zur Umsetzung, wenn:Java Implementierung zyklische Schleife

nach decrease oder increase neuen Wert ein und überprüfen Sie, dass zwischen 1 und 5 (dh Randbedingungen sind zyklisch, so dass),

wenn es größer als 5 ist, dann muss 0 sein , wenn sein kleiner als 0 ist, dann 5

wenn ihr nicht größer als 5 und dessen nicht kleiner als 0 ist, dann Wert kann decrease oder increase sein muss.

es zwischen zwei Nummer Looping, scheint mein Code sein nicht richtig

/* listCount is 5 */ 
/* currentPosition is 1 */ 

/* sample(currentPosition --) */ 
protected void sample(int position) { 
    if (position < 0 && position < listCount) 
     position = 5; 
    else if (position >= listCount) 
     position = 0; 
    else 
     currentPosition = position; 
} 

in diesem Code currentPosition -- 0 dass dann 5 sonst

für weitere Informationen verringern müssen:

Position erhöhen bis es nicht 6. wenn es> 5 ist, dann muss 0 sein, oder Position verringern, bis es nicht 0 ist, wenn seine < 1 dann 5

sein muss
+5

Bitte erläutern Sie sich besser, möglicherweise mit ein paar Beispielen von Eingabe/Ausgabe. – Idos

+0

@Idos simulieren einfache Schleife zwischen zwei Zahlen, wenn currentPosition ist <0: muss 5 sein, wenn seine> 5 dann muss 0 sein, sonst 'currentPosition' kann" verringern "oder" erhöhen " –

+0

Was wird die Position ändern? Benötigen Sie boolesche Werte, unabhängig davon, ob die Position erhöht/verringert werden kann? Was ist das Endziel? –

Antwort

0

Diese Logik sieht

if (position < 0 && position < listCount) 

wenn position = 1 off es Position 5 zurückgesetzt wird - was nichts anderes tut.

Was ich denke, Sie die Funktion tun möchte, ist:

protected void sample(int position) { 
    if (position < 0) { 
     currentPosition = 5; 
    } else if (position >= listCount) { 
     currentPosition = 0; 
    } else { 
     currentPosition = position; 
    } 
} 

Ich würde Zunahme und Abnahme Funktionen vorschlagen separat

protected void increase() { 
    if (currentPosition == listCount) { 
     currentPosition = minValue; 
    } else { 
     currentPosition++; 
    } 
} 

protected void decrease() { 
    if (currentPosition == minValue) { 
     currentPosition = listCount; 
    } else { 
     currentPosition--; 
    } 
} 
+0

scheint es Methoden funktioniert nicht gerade –

+0

Ich habe keine Null in Schleife –

+0

Ändern Sie 0 zu einer Variablen namens "minValue" und setzen Sie es gleich 1 in Ihrem Fall –

0

Ich denke, wenn ich Sie richtig verstehe, wollen Sie Schleife kontinuierlich? Wie auch immer, das ist, was ich von Ihrer Frage über 'zyklisch' und die Informationen in den Kommentaren nehme. Es ist eine gute Idee, "looping up" und "loop down" in zwei verschiedenen Methoden aufzuteilen. zum loop up, könnten Sie folgendes verwenden:

public void increaseloop(int position) 
{ 
    if(position > 5 || position < 0){ 
     position = 0; 
    } 
    for(; position <= 5; position++){ 
     System.out.println(position); 
     if(position == 5){ 
      position = -1; 
     } 
    } 
} 

Dies wird die Nummern 0,1,2,3,4,5 ständig Schleife. Ich bin mir sicher, dass Sie die Methode auch implementieren können, wenn Sie genau das suchen, was Sie gesucht haben.