# Scanner next() oder nextLine() zur prüfung auf leere Eingabe...



## noetig (31. Mrz 2010)

Hallo,

ich verwende einen Scanner um Eingaben von der Console abzufragen. Diese können allem Entsprechen, [A-Za-z0-9] und Sonderzeicehn jeglicher Art. Ich möchte nun Abfragen ob ein "Enter" eingegeben wurde, ohne dass eine Zeichen dabei war. WEnn ich in der Console ein Enter eingebe, springt mir der Cursor nur eine Zeile weiter nach unten. Ich habe versucht mit Scanner .next() und nextLine() zu arbeiten.

Hat mir jemanden einen Tipp was ich tun sollte damit ich diese "leere Eingabe" abfangen kann?


----------



## eRaaaa (31. Mrz 2010)

Verschachtle zwei Scanner 


```
public static void main(String[] args) {
	Scanner s = new Scanner(System.in);
	while (s.hasNextLine()) {
	    Scanner s2 = new Scanner(s.nextLine());
	    if (!s2.hasNext()) {  //es wurde ENTER gedrückt
		System.out.println("ENTER");
		//break; //auskommentieren wenn du die Eingabe komplett Beenden willst....
	    }
	    while (s2.hasNext()) {
		System.out.println(s2.next()); //hier halt deine Zeichenkette
	    }

	    s2.close();
	}
	s.close();
    }
```


----------



## SlaterB (31. Mrz 2010)

ich bin für nextLine()

```
public class Test
{
    public static void main(String[] args)
    {
        Scanner s = new Scanner(System.in);
        for (int i = 0; i < 5; i++)
        {
            System.out.print("Eingabe: ");
            String st = s.nextLine();
            System.out.println("Eingabe war: " + st + 
               (st.length() == 0 ? ",war wohl nur Enter " : ""));
        }
    }
}
```
->

```
Eingabe: 4
Eingabe war: 4
Eingabe: 
Eingabe war: ,war wohl nur Enter 
Eingabe: 455555
Eingabe war: 455555
Eingabe: , war wohl
Eingabe war: , war wohl
Eingabe: xyz
Eingabe war: xyz
```


----------



## noetig (31. Mrz 2010)

Gefällt mir persönlich sehr gut. das kann ich am besten verarbeiten im Quelltext. Danke 

Nachtrag: Funktioniert nicht. Wenn ich auf ==0 prüfe, werde ich gar nicht nach einer Eingabe gefragt beim ersten durchlauf und er gibt sofort ",war..." aus.



SlaterB hat gesagt.:


> ich bin für nextLine()
> 
> ```
> public class Test
> ...


----------



## noetig (31. Mrz 2010)

Java:
Scanner wird übergeben und hat den Namen scan.

```
System.out.println("...calculated?");
        while (scan.hasNextLine()) {
            Scanner s2 = new Scanner(scan.nextLine());
            if (!s2.hasNext()) {  //es wurde ENTER gedrückt
            System.out.println("ENTER");
            //break; //auskommentieren wenn du die Eingabe komplett Beenden willst....
            }
            while (s2.hasNext()) {
            System.out.println(s2.next()); //hier halt deine Zeichenkette
            }
     
            s2.close();
        }
        scan.close();
```

Consolenausgabe:
(ohne eine Eingabe kommt ENTER gleich am Anfang)

...calculated?
ENTER
3 //ist eine eingabe
3 //ist das syso
3
3
2
2
1
1




eRaaaa hat gesagt.:


> Verschachtle zwei Scanner
> 
> 
> ```
> ...


----------



## eRaaaa (31. Mrz 2010)

hö? Zeige mal die Codezeilen wo der Scanner 'scan' erstellt wird und an die Methode übergeben wird?!


----------



## noetig (31. Mrz 2010)

ich darf laut Aufgabenstellung nur eine Scanner-Instanz verwenden. Diese habe ich in der main so erstellt.
Scanner input = new Scanner(System.in);

dann kommen die aufrufe
myNumber = getNumber(input);


public static int getNumber(Scanner scan) {
//...und hier nutze ich ihn, wie wenn ich in der ersten zeile einen neuen Scanner erstellt hätte. 
}


----------

