# Einlesen int und String - scanner



## marcoxdd (19. Aug 2011)

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


```
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... (19. Aug 2011)

marcoxdd hat gesagt.:


> ```
> 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


----------



## marcoxdd (19. Aug 2011)

du hast recht 

mit 

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

klappts so wie ich es wollte.

vielen dank


----------



## Robax (24. Dez 2013)

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


```
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 (25. Dez 2013)

Robax hat gesagt.:


> Hallo ich hab die abfrage verwendet aber bei mir kommt als antwort immer falsch raus! kann mir bitte jemand helfen?
> 
> 
> ```
> ...




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


```
if (eingabe.equals("gyros")) {
```


----------



## Robax (26. Dez 2013)

Vielen dank!


----------



## Kirby.exe (22. Jan 2020)

marcoxdd hat gesagt.:


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


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:

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

```
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


----------



## kneitzel (22. Jan 2020)

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 (22. Jan 2020)

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 (22. Jan 2020)

httpdigest hat gesagt.:


> 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 (22. Jan 2020)

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 (22. Jan 2020)

httpdigest hat gesagt.:


> 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


----------

