Lesen von der Standardeingabe

Eva

Mitglied
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
 
Hallo!

Code:
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
 
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
 
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..

Java:
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

Java:
if (line.equals("Hallo")) {
dann tu dies
} else {
dann tu das
}
 
Zuletzt bearbeitet von einem Moderator:
Hallo!

In java 5 macht man das so:
Java:
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:
Java:
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
 
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 :(

Code:
	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:

Code:
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
 
Zuletzt bearbeitet:
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
Java:
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:

Java:
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
 

Neue Beiträge

Zurück