# Lesen von der Standardeingabe



## Eva (29. März 2004)

Hallo Leute, 

ich hab ein kleines Problem und komme nicht weiter: Wie lese ich von der Standardeingabe einen Wert ein und speichere diese in einem String?

Bitte um Hilfe, 

Eva


----------



## Thomas Darimont (29. März 2004)

Hallo!


```
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/*
 * Created on 29.03.2004
 */

/**
 * @author Administrator
*/
public class ReadStdIn {

	public static void main(String[] args) {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		String line = null;
		try {
			while( (line = br.readLine())!=null){
				System.out.println("StdIn: " + line); 
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
```

Gruß Tom


----------



## Eva (29. März 2004)

He vielen Danke, es funktioniert


----------



## Daywalker2004 (6. Dezember 2006)

auch wenn der thread schon alt ist frage ich mal hier nach 

wieso kann ich nicht mit if(line == "Hallo") den inhalt von line abfragen? Möchte gerne so eine Art "Menü" machen. Also zum Beispiel tippen sie 1 ein, dann kommt halt ne ausgabe oder man kann was eingeben, je nachdem


----------



## RipdEaTh (6. Dezember 2006)

Hi!

Da String in Java ein Objekt darstellt, kann es nicht mit == auf den Inhalt überprüft werden.
Der Operator == vergleicht lediglich, ob es sich um ein und dasselbe Objekt handelt.

Die String-Klasse besitzt extra eine Methode, die equals heißt, mit der du einen String mit einem Wert vergleichen kannst..


```
boolean match = line.equals("Hallo");
```

Die Methode liefert entweder true oder false zurück.. Das würde also z.B. in deiner If-Abfrage wie folgt klappen


```
if (line.equals("Hallo")) {
dann tu dies
} else {
dann tu das
}
```


----------



## Thomas Darimont (6. Dezember 2006)

Hallo!

In java 5 macht man das so:

```
package de.tutorials;

import java.util.Scanner;

public class ConsoleInputExample {
  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.print("Please enter your Name: ");
    String name = scanner.nextLine();
    System.out.print("Please enter your Age: ");
    int age = scanner.nextInt();

    System.out.println("Hello " + name + " after your next birthday you'll be: " + (age+1));
  }
}
```

Unter Java 6 gehts noch einfacher:

```
package de.tutorials;

import java.io.Console;

public class ConsoleInputExample {
  public static void main(String[] args) {
    Console console = System.console();
    String name = console.readLine("Please enter your Name: ");
    int age = Integer.parseInt(console.readLine("Please enter your Age: "));
    System.out.println("Hello " + name + " after your next birthday you'll be: " + (age + 1));
  }
}
```

Gruß Tom


----------



## Daywalker2004 (6. Dezember 2006)

danke für die schnellen antworten 

hatte es aber einfach so gelöst das man zahlen nur eingeben kann und dann hab ich den string in int umgewandelt  aber mit scanner geht das doch schon viel leichter 


noch ne kleine frage.. kann ich bei java die konsoleneingaben löschen? also sowas wie cls unter dos 

edit: ich hab noch nen problem mit dem scanner 


```
public static void main(String[] args) {
		menue2();
	}

	static void menue2() {
		
		int eingabe = 0;
		
		System.out.println("Willkommen bei dem Haushaltsbuch");
		System.out.println("");
		System.out.println("Neues Mitglied? [1] --- Registriertes Mitglied? [2]");
		System.out.println("");
		System.out.print("Bitte wählen Sie: ");
		
		eingabe = scanner.nextInt();
		
		scanner.match();
		
		switch(eingabe){
			case 1: neuesMitglied();
			case 2: registriertesMitglied();
		}
		
		
	}
	
	static void neuesMitglied(){
	
		String mName;
		int mNummer;
		double mBetrag;
		
		System.out.println("Hier können Sie sich als neues Mitglied anmelden und alle Vorzüge des Haushaltbuches nutzen.");
		System.out.println();
		System.out.print("Bitte geben Sie Ihren Namen ein: ");
		mName = scanner.nextLine();
		
		System.out.print("Bitte geben Sie Ihren Startbetrag ein: ");
		mBetrag = scanner.nextDouble();
		
		mNummer = (int)(Math.random()* 99999999) + 1;
		
		System.out.println("");
		System.out.println("Übersicht:");
		System.out.println("Kontoname:   " + mName);
		System.out.println("Kontonummer: " + mNummer);
		System.out.println("Startbetrag: " + mBetrag);
		
	}
```

Ausgabe:


```
Willkommen bei dem Haushaltsbuch von Christian Gohmann

Neues Mitglied? [1] --- Registriertes Mitglied? [2]

Bitte wählen Sie: 1
Hier können Sie sich als neues Mitglied anmelden und alle Vorzüge des Haushaltbuches nutzen.

Bitte geben Sie Ihren Namen ein: Bitte geben Sie Ihren Startbetrag ein:
```

der überspringt die Eingabe des Namen  sry das ich so viele fragen stelle

danke schonmal

mfg
Daywalker2004


----------



## Daywalker2004 (7. Dezember 2006)

habs immer noch nicht hinbekommen  weiß jemand ne lösung?


----------



## Laocoon (7. Dezember 2006)

Der Scanner verhält sich schon richtig. Im Stream steht wenn du ne Nummer eingibst ja nicht nur deine Nummer, sondern auch noch ein \n (hast die Eingabe ja mit Return bestätigt). Das heißt nach deinem 

```
mName = scanner.nextLine();
```
steht \n in Name.

Ich bin derzeit leider nen bissl an 1.4 gebunden. Daher kenne ich mich nicht ganz so gut mit dem Scanner aus. Daher weiß ich nicht, ob mein workaround so das non plus ultra ist:


```
Scanner scan = new Scanner(System.in);
System.out.println("Bitte eine nummer eingeben: ");
int num = scan.nextInt();
scan.nextLine();
String name = scan.nextLine();
System.out.println("Die Nummer ist: " + num + "\nDer Name ist: " + name);
```
Du ließt also einfach die "pseudozeile" aus, ohne was damit zu machen.
vllt. gibt es auch noch sowas wie nen clear() oder flush(). Hab aber auf die schnelle nix gefunden.

MfG
Daniel


----------



## Daywalker2004 (7. Dezember 2006)

danke für die antwort, werde ich später mal umsetzen wenn ich dazu zeit finde


----------

