Kreisel auf Konsole, Zeichen an selber Stelle überschreiben

planb2000

Erfahrenes Mitglied
Hallo Java Cracks,

-- ich möchte gerne auf der Konsole ein sich kreisenden Stern ausgeben.
-- Initial sollen das minus zeichen und das pipe Zeichen ausgegeben werden. ("-", "|")
-- Im Abstand von 500 ms sollen die Zeichen ersetzt werden.

Als, sagen wir mal, Zeilenweise Ausgabe geht es. Wie aber kann ich nun immer an der gleichen Stelle das Zeichen tauschen.
Habt Ihr eine Idee ?

Hier meine mini-Klasse:
Java:
public class Kreisel {

    static int i = 0;
    static public void myKreiselPrint() throws InterruptedException{
        while (i <= 10) {
      
            if ((i % 2) == 0) {
               
                Thread.sleep(500);
                System.out.print("-");
                 i++;
            } else {

                Thread.sleep(500);
                System.out.print("|");
                i++;
              
            }
           
        }
 
 System.out.println ("\n");
    }
 
}

Würde mich über einen "Schubs" in die richtige Richtung freuen.
 
Hallo,

hier mal ein Beispiel wie man progress / fortschritt auf der Console ausgeben kann.
Java:
package de.tutorials;

import static java.util.concurrent.TimeUnit.MILLISECONDS;

import java.util.Arrays;

public class SpinningCharExample {

	final static char BACKSPACE = (char) 8;
	final static char PROGRESS_INDICATOR_CHAR = '#';

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception {
		System.out.println("Start");

		int max = 100;

		for (int i = 0; i <= max; i++) {
			
			int percentageComplete = (int) Math.ceil(i / (double) max * 100);
			
			char[] progress = new char[percentageComplete / 10];
			Arrays.fill(progress, PROGRESS_INDICATOR_CHAR);
			
			String progressBar = String.valueOf(progress) + " " + percentageComplete +"% ";
			
			System.out.print(progressBar);
			
			char c = 0;
			
			switch(i % 4){
			case 0:
				c = '\\';
				break;
			case 1:
				c = '|';
				break;
			case 2:
				c = '/';
				break;
			case 3 :
				c = '-';
				break;
			}
			
			if(i == max){
				System.out.print(BACKSPACE);
				c = '.';
			}
			
			System.out.print(c);

			MILLISECONDS.sleep(100);

			for (int n = 0; n < progressBar.length()+1; n++) {
				System.out.print(BACKSPACE);
			}
		}

		System.out.println();
		System.out.println("End");
	}
}
Funktioniert nur in der (Dos/Shell) Console nicht in der Console in der IDE (Eclipse).

Ausgabe:
Code:
tom@halu:~/Desktop/workspaces/3.4.2JEE/de.tutorials.training$ java -cp bin de.tutorials.SpinningCharExample
Start
########## 100%.
End

Gruß Tom
 
Zurück