Benutzereingaben auf Datentyp nur mit Scanner überprüfen ohne Exceptions

CaS

Grünschnabel
hallöchen ich hätte mal ne Frage bezüglich der Scanner Klasse in Java....und zwar ich wollte zur Übung mal die Benutzereingabe mit den Funktionen der Scanner Klasse auf den eingegebenen Datentyp überprüfen....ich weiß das dies auch mit Exceptions funktioniert jedoch wollte ich dazu nur die Scanner Klasse nutzen um diese besser kennenzulernen.....
....ich habe nun dieses Programm geschrieben....

Code:
package eingabenüberprüfung;

import java.util.Scanner;

public class Ueberpruefung 
{

	/**
	 * @param args
	 */
	public static void main(String[] args) 
	{
		// TODO Auto-generated method stub
		Scanner scan = new Scanner(System.in);
		
		boolean abfrage = true;

		int zahl=0;
		
		do
		{
				
			System.out.println("Gebe eine Zahl ein!");
			

			
			if(scan.hasNextInt())
			{
				abfrage=false;
				zahl=scan.nextInt();
			
			}
			
			scan.next();
			
		}while(abfrage);
		
		System.out.println(zahl);

	}

}

...dieses Programm überprüft nun mit den Methoden der Scanner Klasse ob der Benutzer einen int Wert eingegeben hat. Nun will ich diesen Wert aber auch in eine int Variable abspeichern was auch funktioniert....jedoch muss ich nachdem ich eine Zahl eingegeben habe nochmal eine eingabe tätigen und erst danach wird die eingegebene Zahl ausgespruckt....
...nun würde ich gerne wissen was meinem Programm noch fehlt um den eingebenen Wert nur mit einer Eingabe abzuspeichern und auszugeben....
 

youza

Erfahrenes Mitglied
Nicht ernsthaft :D

Java:
import java.util.Scanner;
 
public class Ueberpruefung 
{
 
    /**
     * @param args
     */
    public static void main(String[] args) 
    {
        // TODO Auto-generated method stub
        Scanner scan = new Scanner(System.in);
        
        boolean abfrage = true;
 
        int zahl=0;
        
        do
        {
                
            System.out.println("Gebe eine Zahl ein!");
            
 
            
            if(scan.hasNextInt())
            {
                abfrage=false;
                zahl=scan.nextInt();
            
            }
            
          
            
        }  while(abfrage);
        
        System.out.println(zahl);
 
    }
 
}
Edit:
Vielleicht eine kleine Erklärung du machst zweimal .hasNext somit wirst du auch zweimal nach einer Eingabe gefragt ;)
 

CaS

Grünschnabel
...erstmal vielen Dank für die Antwort youza...ich habe mein vorhaben jetzt folgendermaßen realisiert...

Code:
package eingabenüberprüfung;

import java.util.Scanner;

public class Ueberpruefung 
{

	/**
	 * @param args
	 */
	
	public static void main(String[] args) 
	{
		// TODO Auto-generated method stub
		Scanner scan = new Scanner(System.in);
		
		boolean abfrage = true;
		int zahl=0;
		
		do
		{
				
			System.out.println("Gebe eine Zahl ein!");
			
			if(scan.hasNextInt())
			{
				abfrage=false;
				zahl=scan.nextInt();
			}
			
			scan.nextLine();
			
		}while(abfrage);
		
		System.out.println("Die eingegebene Zahl lautet: " + zahl);

	}

}

...so funktioniert der Code...mir ist jetzt aber immer noch nicht ganz klar wie sich das mit den tokens und dem Scanner verhält
wenn ich bei hasNextInt schon ein Wert eingegeben habe wieso muss ich dann bei zahl=scan.nextInt(); kein Wert mehr eingebeben und ausserdem hatte ich im vorherigem Code nicht zweimal hasNextInt() geschrieben...