# java zurück befehl



## jonasjav (2. Dez 2012)

hallo 
ich bin neu hier ich hab mit der java programmierung unter eclipse angefangen und ich hab folgende frage wie kann ich einen zurück befehl programmieren hier ist ein beispiel:

```
import java.util.Scanner;
 public class backbuton {
   public static void main(String args[])
{//hier will ich wider zurück hin
System.out.println("hallo sie sind im haupt menü");
System.out.println("1drücken um ins untermenü zukommen");
Scanner inscan2= new Scanner (System.in);
int in2=inscan2.nextInt();
if (in2==1)
{ 
//das ist das unter menü
 System.out.println("wilkommen im untermenü");
Scanner inscan= new Scanner (System.in);
int in=inscan.nextInt();
System.out.println("1drücken um zurück zugelangen");
if (1==in){
//hier soll der befehl um wider zurück zukommen rein ;
}
}
}
}
```
edit// ich habs noch mal verändert jetzt ist es richtig
das ist nur ein kleiner ausschnit daraus
 ich mein das ich eine "etage" wider hochkomme


----------



## L-ectron-X (2. Dez 2012)

Was genau meinst du mit "zurück"? Eine Zeile zurück (nach oben) in der Befehlszeile springen?


----------



## jonasjav (2. Dez 2012)

L-ectron-X hat gesagt.:


> Was genau meinst du mit "zurück"? Eine Zeile zurück (nach oben) in der Befehlszeile springen?



ja eine zeile wider hoch


----------



## Volvagia (2. Dez 2012)

Soetwas wird grundsätzlich mit einer Schleife gelöst.


----------



## L-ectron-X (2. Dez 2012)

Das ist nur mit einem "Trick" möglich.
http://www.java-forum.org/allgemeine-java-themen/21506-konsolenanimationen.html


----------



## Hadyaner (2. Dez 2012)

Ich verstehe dein Problem nicht so ganz, bitte ausführliche Erklärung. Warum soll er wieder hoch, was soll das bringen ? und bei welcher Anweisung ?


----------



## pro2 (2. Dez 2012)

Ergibt irgendwie keinen Sinn. Was hast du denn vor? Wenn 1 eingelesen wurde, soll dann wieder eine neue Zahl eingelesen werden? Aber was passiert, wenn eine andere Zahl eingelesen wurde? Und dann noch diverse Sachen:


```
1==in
```

Fragst du auch "ist 1 gleich x" oder "ist x gleich 1"? 

Und Sprungbefehle gibt es in Java eigentlich nicht. Es gibt solche Sachen wie continue und break, aber dafür muss man dann erst mal mit Schleifen umgehen können und dann kann man es meistens auch anders lösen.


----------



## Volvagia (2. Dez 2012)

L-ectron-X hat gesagt.:


> Das ist nur mit einem "Trick" möglich.


Er muss doch die Eingabe wiederholen, falls die gelesene Zahl keine 1 ist. Wobei ich den Sinn nicht ganz verstehe. Wenn die Eingabe keine 1 ist und sie sich dadurch wiederholt ist die Eingabe doch überflüssig. ???:L


----------



## L-ectron-X (2. Dez 2012)

Volvagia hat gesagt.:


> Er muss doch die Eingabe wiederholen, falls die gelesene Zahl keine 1 ist.


Wenn das Gesuchte nicht meiner Annahme entspricht, habe ich die Sache falsch verstanden... Entschuldigung. :bahnhof:


----------



## jonasjav (2. Dez 2012)

ich habs überarbeitet kennt den einer so einen befehl auch wenn der unnötig ist


----------



## Hadyaner (2. Dez 2012)

Zeig doch mal bitte die überarbeitete Version.


----------



## trääät (2. Dez 2012)

@TO
wie angesprochen : sowas löst man mit schleifen ...


----------



## pro2 (2. Dez 2012)

```
public static void main(String[] args)
    {
        Scanner inscan = new Scanner(System.in);
        int in;
        while ((in = inscan.nextInt()) == 1)
        {
            System.out.println("Die eingelesen Zahl ist: " + in);
        }
    }
```

Tut glaube ich das, was du wolltest.^^
Aber schau dir halt Schleifen an, sonst wirst du das nicht selbst lösen können.


----------



## jonasjav (2. Dez 2012)

ne das meine ich nicht, kopiert euch mein "kleines menü" mal bei euch rein und führt es dann aus, dann merkt ihr wahrscheinlich was ich meine

kleines Menü:

```
import java.util.Scanner;
 public class backbuton {
   public static void main(String args[])
{//hier will ich wider zurück hin
System.out.println("hallo sie sind im haupt menü");
System.out.println("1drücken um ins untermenü zukommen");
Scanner inscan2= new Scanner (System.in);
int in2=inscan2.nextInt();
if (in2==1)
{ 
//das ist das unter menü
 System.out.println("wilkommen im untermenü");
System.out.println("1drücken um zurück zugelangen");
Scanner inscan= new Scanner (System.in);
int in=inscan.nextInt();

if (1==in){
System.out.println("hier soll der befehl rein");
//hier soll der befehl um wider zurück zukommen rein ;
}
}
}
}
```


----------



## trääät (2. Dez 2012)

naja ... wie gesagt : sowas macht man mit LOOPS !

es gibt in java kein "GOTO" wie es z.b. in nem MS-DOS-Batch-file möglich ist ...
und selbst wenn wäre es auf ASM runtergebrochen auch nur n JMP ... und sowas macht man eben mit loops ... das man halt sagt : wenn der code bis hier hin gelaufen ist läuft eher wieder von oben ... direkt in eine gewisse ziele springen geht nur auf sehr tiefen low-level sprachen ...


----------



## jonasjav (2. Dez 2012)

trääät hat gesagt.:


> naja ... wie gesagt : sowas macht man mit LOOPS !
> 
> es gibt in java kein "GOTO" wie es z.b. in nem MS-DOS-Batch-file möglich ist ...
> und selbst wenn wäre es auf ASM runtergebrochen auch nur n JMP ... und sowas macht man eben mit loops ... das man halt sagt : wenn der code bis hier hin gelaufen ist läuft eher wieder von oben ... direkt in eine gewisse ziele springen geht nur auf sehr tiefen low-level sprachen ...



also geht das nicht oder 
wie gehen die loops?
edit// ich hatte von nem bekannten erfahren das man das machen könnte indem man mit einem befehl in eine andre main wechseln und in der methode steht widerruhm ein befehl der dann widerrum in die andre main wechselt


----------



## Volvagia (2. Dez 2012)

Warum methodisierst du das ganze nicht ein wenig?
Die Aufrufe werden so zwar gestapelt (kriegt man sicher schöner hin), aber ich denke das ist vernachlässigbar:


```
public class Menu {
	public static void main(String args[]) {
		mainMenu(new Scanner(System.in));
	}
	private static void mainMenu(Scanner scanner) {
		System.out.println("hallo sie sind im haupt menü");
		System.out.println("1drücken um ins untermenü zukommen");
		System.out.println("2 um zu beenden");
		
		int i = readAcceptedInt(scanner, 1, 2);
		if(i == 1) {
			subMenu(scanner);
		} else if(i == 2) {
			Runtime.getRuntime().exit(0);
		}
	}
	private static void subMenu(Scanner scanner) {
		System.out.println("wilkommen im untermenü");
		System.out.println("1 drücken um zurück zugelangen");
		
		int i = readAcceptedInt(scanner, 1);
		if(i == 1) {
			mainMenu(scanner);
		}
	}
	private static int readAcceptedInt(Scanner scanner, int... accepteds) {
		do {
			int i = scanner.nextInt();
			
			for(int j:accepteds) {
				if(i == j) {
					return(i);
				}
			}
		} while(true);
	}
}
```


----------



## Spacerat (2. Dez 2012)

Glaskugel sagt, TO weiss nicht, wie man Menüs aufbaut...

```
mainMenu() {
  boolean exit = false;
  while(!exit) {
    printMenupunkt();
    menupunkt = default;
    do {
      switch(menupunkt) {
      case 1:
        call menu1();
        menupunkt = default;
        break;
      case 2:
        call menu2();
        menupunkt = default;
        break;
      case 0:
        exit = true;
        break;
      default:
        menupunkt = scanEingabe();
      }
    } while(menupunkt == default);
  }
  // programm exit
}

menu1() {
  boolean exit = false;
  while(!exit) {
    printMenupunkt(); // per System.out
    menupunkt = default;
    do {
      switch(menupunkt) {
      case n:
        doWorkN();
        menupunkt = default;
        break;
      case 0:
        exit = true;
        break;
      default:
        menupunkt = scanEingabe();
      }
    } while(menupunkt == default);
  }
  return; // zurueck ins mainMenu
}

menu2() {
  boolean exit = false;
  while(!exit) {
    printMenupunkt();
    menupunkt = default;
    do {
      switch(menupunkt) {
      case n:
        doWorkN();
        menupunkt = default;
        break;
      case 0:
        exit = true;
        break;
      default:
        menupunkt = scanEingabe();
      }
    } while(menupunkt == default);
  }
  return; // zurueck ins mainMenu
}
```
BTW.: "default" heisst in diesem Fall "ungültige Eingabe".


----------



## trääät (3. Dez 2012)

jonasjav hat gesagt.:


> also geht das nicht oder
> wie gehen die loops?
> edit// ich hatte von nem bekannten erfahren das man das machen könnte indem man mit einem befehl in eine andre main wechseln und in der methode steht widerruhm ein befehl der dann widerrum in die andre main wechselt



OUCH ... was soll das denn ? das endet nachher nur in nem StackOverflow ...

und ganz erlich ... du bist NICHT in der lage selbst deinen browser zu öffnen ... google aufzurufen ... und dort "java loops" bzw "java schleifen" einzugeben ? wenn das wirklich deinem wissensstand entsprechen sollte ... lass lieber die finger vom programmieren und lerne erstmal wie man aus einem forum-post die wichtigen stichworte erfasst und mit diesen selbst ne passende lösung für sein problem sucht und findet ...

es macht keinen sinn wenn dir jemand alles vormacht und du es dann nicht verstehst weil du es nicht mal kennst ob wohl gerade sowas wie loops elementare grundbestandteile einer jeden programmier-sprache sind ...


----------

