# isnan abfrage



## isnan (22. Okt 2008)

hi

ich versuche ein relativ simple aufgabe lösen.

vereinfacht gesagt möchte ich folgendes:

man gibt eine zahl oder buchstaben ein.
das programm prüft ob es eine zahl oder ein buchstabe ist und gibt die richte antwort aus.

ich hab schon etliche variationen probiert....
wie funktioniert das richtig? ich nehm mal an der fehler liegt bei 

```
if ( (isNaN(p) == true)) {
```


ist nur ein testbeispiel.
ich brauch das ganze bei einer mathematische formel, bei der auch "ungültig" rauskommen kann.


danke



```
public class testnan {

  public static void main(String[] args) {

		System.out.println( "Variable p eingeben:");
		double p = In.readDouble();

		if ( (isNaN(p) == true)) { 
			System.out.println("IST KEINE ZAHL");
		} 
		else { System.out.println("IST EINE ZAHL");
	}
  }
  
}
```


----------



## Schandro (22. Okt 2008)

Keine Fehlerbeschreibung...
ist dein Problem, dases abstürzt wenn du was anderes als ne Zahle eingibst?
Das liegt am readDouble(), das schmeißt ne Fehlermeldung wenns das Eingegebene kein Double ist.
muste mit try catch fangen...


----------



## isnan (22. Okt 2008)

er kanns gar nicht compillieren.


----------



## Der Müde Joe (22. Okt 2008)

if ( Double.isNaN(p) ) {...

In wird wohl ein Klasse von der Uni sein.
Sehr wahrscheinlich schmeisst diese eine IOException...

aber den Fehler beim Kompilieren willst du uns ja nicht zeigen


----------



## ARadauer (22. Okt 2008)

```
double p = In.readDouble();
```
was immer das ist... es liefert sicher keine string zurück...

In.readDouble();  und isNaN, sind nichts offizelles, das kommt von deinem lehrer, mit dem und ohne fehlermeldung können wir nix anfangen...

so gings mit boardmitteln..

```
BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
		
		try {			
			String input = r.readLine();
			Double d =Double.parseDouble(input);
			System.out.println("war eine Zahl");			
		} catch (NumberFormatException e) {
			System.out.println("war keine Zahl");
		}
```


----------



## Der Müde Joe (22. Okt 2008)

> ..isNaN, sind nichts offizelles,



Doch...aber eben nicht ohne Klasse

http://java.sun.com/javase/6/docs/api/java/lang/Double.html#isNaN(double)
http://java.sun.com/javase/6/docs/api/java/lang/Float.html#isNaN(float)

In.read...hingegen nicht


----------



## Gast (22. Okt 2008)

in COBOL konnte man das aber mit Abfrage nach NUMERIC prüfen.


----------



## Schandro (22. Okt 2008)

Jo...
In Java halt net.
Dafür schmeißen die casting-Methoden wie Double.parseDouble aber schöne Exceptions, an denen man genauso festellen kann, obs ne Zahl ist...


----------



## Landei (22. Okt 2008)

Du kannst auch schreiben:


```
double p = 0/0;
if (p != p) {
   //behandle NaN
}
```


----------

