# Double einlesen und auf fehler überprüfen



## Spamio (10. Jan 2009)

Hallo

Ich möchte eine Zahl einlesen und überprüfen ob zum Beispiel keine Buchstaben eingegeben wurden.

Ich komme mit diesen exceptions wirklich nicht gut klar. Es wäre also sehr nett wenn mir jemand den entscheidenen Programmteil vervollständigen könnte, oder mir hilfreiche tips gibt.

Das Grundgerüst würde dann so lauten:



```
import java.util.*;
public class Programmname{

	public static void main (String [] args){

		Scanner in = new Scanner (System.in);
		double zahl;
		zahl=in.nextDouble();

	}
}
```


----------



## Templon (10. Jan 2009)

```
Scanner s = new Scanner(System.in);
		try  {
			 s.nextDouble();
		} catch (InputMismatchException e) {
			System.out.println("Ihre Eingabe war kein double.");
		}
```

So was?

Die Doku der "nextDouble" Methode anschauen hätte geholfen...


----------



## Guest (11. Jan 2009)

Der sagt mir immer:

Programmname.java:33: cannot find symbol
symbol  : class InputMismatchException
location: class Programmname
			} catch (InputMismatchException e) {

muss ich noch was importieren oder so ?


----------



## SlaterB (11. Jan 2009)

genau, importieren, jede einzelne Import-Anweisung will doch hier keiner posten,

in einer Entwicklungsumgebung wie Eclispe ist das nur eine Tasten-Kombination,
ansonsten musst du in der Java-API den genauen Pfad der Klasse nachschlagen und ein import komplett eintippen:
http://java.sun.com/javase/6/docs/api/


----------



## Guest (11. Jan 2009)

Ja verstehe ich. Ich hab das da jetzt auch rausgesucht und folgenden mist programmiert.



}[/quote]
	
	
	
	





```
import java.util.*;
import java.util.InputMismatchException;

public class Test{

	public static void main (String [] args);
	
	Scanner s = new Scanner(System.in); 
      try  { 
          s.nextDouble(); 
      } catch (InputMismatchException e) { 
         System.out.println("Ihre Eingabe war kein double."); 
      }
}
```


Der sagt mir aber leider immer noch das selbe ^^


----------



## SlaterB (11. Jan 2009)

Klammersetzung war nicht gut

```
import java.util.InputMismatchException;
import java.util.Scanner;

public class Test {

	public static void main(String[] args) {

		Scanner s = new Scanner(System.in);
		try {
			s.nextDouble();
		} catch (InputMismatchException e) {
			System.out.println("Ihre Eingabe war kein double.");
		}
	}
}
```


----------



## Guest (11. Jan 2009)

Jaaaa es geht ^^

Vielen Dank. Hat mir wirklich sehr weiter geholfen.


----------



## Guest (11. Jan 2009)

und schon bin ich bein nächsten problem  ^^

ich muss die abfragen mehr mals hintereinander machen.
Wenn ich das ausführe und ich als erstes gleich nen buchstaben eingebe nimmt der alle catch dinger mit.
Falls ich beim zweiten nen buchstabe eingebe logischer weise nurnoch das zweite und dritte catch.

Ich weiß echt nicht was ich da machen muss um das zu unterbinden



```
import java.util.InputMismatchException; 
import java.util.Scanner; 

public class Test { 

   public static void main(String[] args) { 

      Scanner s = new Scanner(System.in); 
      try { 
         double a=s.nextDouble(); 
      } catch (InputMismatchException e) { 
         System.out.println("Ihre Eingabe von a war kein double."); 
      }
	  
      try { 
         double b=s.nextDouble(); 
      } catch (InputMismatchException e) { 
         System.out.println("Ihre Eingabe von b war kein double."); 
      }
	  
      try { 
         double c=s.nextDouble(); 
      } catch (InputMismatchException e) { 
         System.out.println("Ihre Eingabe von c war kein double."); 
      } 
   } 
}
```


----------



## didjitalist (11. Jan 2009)

du versuchst nur einmal, ein double zu lesen. schlägt das fehl, geht er gleich zum nächsten weiter.


```
static Double readDouble( Scanner s )
{
  try
  {
     return s.nextDouble();
  }
  catch ( InputMismatchException e )
  {
     return null;
  }
}

// ...
Double a;
while( ( a = readDouble( s ) == null )
{
   System.out.println( "Ihre Eingabe von a war kein double." );
}
```


----------



## Guest (11. Jan 2009)

scheint zu funktionieren aber der will der Double variable nicht den wert "null" zuweisen.

sprich 

incompatible types
found   : double
required: boolean


----------



## SlaterB (11. Jan 2009)

```
while ((a = readDouble(s)) == null) {
			System.out.println("Ihre Eingabe von a war kein double.");
		}
```


----------



## Guest (11. Jan 2009)

Nochmals vielen dank für die Antworten

Ich hab das programm jetzt fertig. Das mit der Null zuweisung hat immer noch nicht funktioniert. Die Klammern sind mir schon aufgefallen. Ich setz ehh immer um alles 10 klammern.

Also wie gesagt ohne eure Hilfe hätte ich jetzt schon selbstmord begangen. Ist immer wieder unglaublich wie frustrierend kleine Fehler sind ^^


----------

