kleines programm verkürzen

agosinga

Grünschnabel
kann man dieses programm noch verkürzen oder verbessern

savitch.In kann man unberücksichtigt lassen, ist nur meine klasse mit der ich die eingabewerte einlese.
l und r bedeutet links und rechts.

so solls aussehen: (einfach alle nuller der zufallszahlen nach hinten tauschen)
|_no 0s___|____________|_0s_|

hier mein beispiel:
Code:
public class Tauschprogramm { 

public static void main(String[] args) { 

int[] werte; 
int anzWerte; 

System.out.println("Tauschprogramm, dass alle Nullen nach hinten tauscht"); 
System.out.println("Gib eine Anzahl von Werten als Int-Zahl ein:"); //Benutzeraufforderung zur Eingabe 
anzWerte = SavitchIn.readLineInt(); //einlesen der Werte 

werte = new int[anzWerte]; 

for (int i = 0; i < werte.length; i++) { // Zufallswerte werden erstellt (%5) 
werte[i] = ((int) (Math.random()*100000))%5; //modulo 5, mind. jede 5.zahl eine Null. 

System.out.print(werte[i] +","); //Die Zufallwerte ausgeben 
} 

int l=0, r = werte.length - 1; //Letzter Wert wird nicht betrachtet. 
int anzSchritte=0; //Anfangswert 0 

for (int i = 0; i < r; i++) { 
anzSchritte++; 
if (werte[i] == 0) { 
while (werte[r] == 0) { 
r--; 
} 
werte[i] = werte[r]; // tausche nach hinten 
werte[r]=0; 
r--; 
} else { 
l++; 
} 
} 


System.out.println("Anzahl der Schritte: " + anzSchritte); 
for (int wert : werte) { 
System.out.print(wert +","); 
} 
} 
}
 
Zurück