Einlesen int und String - scanner

marcoxdd

Mitglied
hallo zusammen,

habe ein problem ... will mit hilfe des scanners daten einlesen.... erst eine zahl (int) dann einen text(string)

komischerweise ignoriert er immer das einlesen des strings

wenn ich jedoch erst den string und dann den int einlese ... dann gehts... andersrum aber nicht

Java:
import java.util.Scanner;

class Rechner2 {
	public static void main(String[] args) {

		Scanner scan = new Scanner(System.in);

		int zahl1;
		int zahl2;
		String eingabe;

	

		System.out.println("Geben Sie eine Zahl ein"); // Zahl 1
		zahl1 = scan.nextInt();

	

		System.out.println("Geben Sie eine text ein"); // Zahl 1
		eingabe = scan.nextLine();


	}

}

vielen dank
 

Michael...

Top Contributor
Java:
    eingabe = scan.nextLine();
nextLine liest bis zum nächsten Zeilenende.
Da Du zur Eingabe der Zahl mit Return bestätigen musst liest nextInt() die Zahl und nextLine() nur bis Zeilenumbruch nach der Zahl - also nichts.
Gib einfach mal 12 abc gemeinsam ein, dann wird Dir 12 als Zahl und sofort abc ausgegeben.
next() wartet auf die Eingabe eines Strings
 
Zuletzt bearbeitet von einem Moderator:

marcoxdd

Mitglied
du hast recht :)

mit
Java:
System.out.println("Geben Sie eine text ein"); // Zahl 1
		eingabe = scan.next();

klappts so wie ich es wollte.

vielen dank :)
 

Robax

Mitglied
Hallo ich hab die abfrage verwendet aber bei mir kommt als antwort immer falsch raus! kann mir bitte jemand helfen? ;)

Java:
public static int Frage2(int punkte)  {
		System.out.println();
		System.out.println();
		
		System.out.println("* Punkte: " + punkte);
		System.out.println("*    Was ist mein Lieblingsessen?");

		Scanner scanner = new Scanner(System.in);
		String eingabe = scanner.nextLine();    

	    if (eingabe == "gyros") {
	    	System.out.println("* Richtig!");
			return 1;
		} else {
			System.out.println("* Falsch! gyros wäre richtig");  
			return 0;	
		}
	}

Vielen dank im vorraus! :)
 

engelswut

Neues Mitglied
Hallo ich hab die abfrage verwendet aber bei mir kommt als antwort immer falsch raus! kann mir bitte jemand helfen? ;)

Java:
	    if (eingabe == "gyros") {

Vielen dank im vorraus! :)


Strings werden mit der Funktion equals() verglichen nicht mit ==

Java:
	    if (eingabe.equals("gyros")) {
 

Kirby.exe

Top Contributor
hallo zusammen,

habe ein problem ... will mit hilfe des scanners daten einlesen.... erst eine zahl (int) dann einen text(string)

komischerweise ignoriert er immer das einlesen des strings

wenn ich jedoch erst den string und dann den int einlese ... dann gehts... andersrum aber nicht

Java:
import java.util.Scanner;

class Rechner2 {
    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);

        int zahl1;
        int zahl2;
        String eingabe;

 

        System.out.println("Geben Sie eine Zahl ein"); // Zahl 1
        zahl1 = scan.nextInt();

 

        System.out.println("Geben Sie eine text ein"); // Zahl 1
        eingabe = scan.nextLine();


    }

}

vielen dank
Wie @Michael... bereits erwähnte, ließt sc.nextInt() keine Zeilenumbrüche mit, weshalb ich dir empfehle Zahlen mit einem der beiden Methoden einzulesen:

Mit Scanner:
Java:
Scanner sc = new Scanner(System.in);
try{
    int input = Integer.parseInt(sc.nextLine());        // <--- Sollte keine Zahl hier eingelesen werden, wird eine Exception geworfen
}catch(Exception e){
    System.out.println("Das ist keine Zahl");
}

Mit BufferedReader:
Java:
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
try{
    int input = Integer.parseInt(in.readLine());        // <--- Sollte keine Zahl hier eingelesen werden, wird eine Exception geworfen
}catch(Exception e){
    System.out.println("Das ist keine Zahl");
}

MfG Kirby :)
 
K

kneitzel

Gast
Nur als kleine Anmerkung: Es ist in der Regeln schlecht, einfach nur "Exception" abzufangen.

Es geht Dir doch explizit darum, dass beim parsen keine Zahl angegeben wurde, d.h. Du willst die NumberFormatException abfangen.

Wenn Du einen BufferedReader hast, dann würde man ggf. auch noch eine IOException abfangen wollen, aber das wäre ja ein ganz anderes Problem und sollte daher auch anders behandelt werden.
 

httpdigest

Top Contributor
Ihr wisst aber schon, dass dieser Thread mehr als acht Jahre alt ist und die bis 2013 teilnehmenden Personen seit dieser Zeit sich auch nicht mehr eingeloggt haben?
Ehrlich, ich frage mich, wie Leute solche Threads überhaupt finden, um dann nach fast einem Jahrzehnt noch eine Antwort zu schreiben...
 

Kirby.exe

Top Contributor
Ihr wisst aber schon, dass dieser Thread mehr als acht Jahre alt ist und die bis 2013 teilnehmenden Personen seit dieser Zeit sich auch nicht mehr eingeloggt haben?
Ehrlich, ich frage mich, wie Leute solche Threads überhaupt finden, um dann nach fast einem Jahrzehnt noch eine Antwort zu schreiben...
Ohh habe ich übersehen xD Es sah so aus als hätte jemand es neue gepostet xD Nevermind :)
 

httpdigest

Top Contributor
Mich würde trotzdem interessieren, wie du diesen Thread gefunden hast. :)
In den Subforen sind die Beiträge ja absteigend nach Datum sortiert... Wo und wie sah es also danach aus, als wäre der Beitrag neu?
 

Kirby.exe

Top Contributor
Mich würde trotzdem interessieren, wie du diesen Thread gefunden hast. :)
In den Subforen sind die Beiträge ja absteigend nach Datum sortiert... Wo und wie sah es also danach aus, als wäre der Beitrag neu?
Also komischer weiße, als ich auf neuste Beitrage geklickt habe, war dieser ganz oben xD Sehr komisch... :) Scheinbar gibt es Schwarze Magie doch:p
 

Neue Themen


Oben