# Object auf Double, Int, String testen



## Tallan (18. Nov 2009)

Hallo zusammen,

Folgendes Problem, der User gibt in eine JTabelle falsche Daten ein, 
z.B. in eine Spalte die Zahlen enthalten soll wird ein String eingetragen. 

Das würde ich gerne abfangen und daher den Wert in der Tabelle bzw das Object überprüfen ob es sich um eine Zahl oder z.B um einen String handelt.

Gibt es da eine Möglichkeit?


----------



## ARadauer (18. Nov 2009)

instanzeof

```
Object obj = new Double(200);
     if(obj instanceof Double){
        System.out.println("Double");
     }else if(obj instanceof String){
        ...
     }//
```

Wobei ich dennke du redest von der setValue Methode des AbstractTabelModels, oder? ich denke die liefert immer String zurück ausser du hast den Editor überschrieben...


----------



## Tallan (18. Nov 2009)

ARadauer hat gesagt.:


> instanzeof
> 
> ```
> Object obj = new Double(200);
> ...



Genau es geht um die getValueAt ... Methode des TableModels, instanceof Double hatte ich schon probiert gab allerdings keine Ausgabe, was logisch wäre sofern alles als String zurückgegeben wird.
Gibt es eine andere alternative das abzufangen?
Ich schreibe die Daten in eine Datenbank und da kracht es wenn der User mißt eingibt.


----------



## Michael... (18. Nov 2009)

Mit welchem TableModel arbeitest Du? Wenn Du mit AbstractTableModel, DefaultTableModel o.ä.
arbeitest kannst Du mit der Methode 
	
	
	
	





```
public Class<?> getColumnClass(int columnIndex)
```
 pro Spalte festlegen welche Einträge gemacht werden dürfen.
In folgendem Bsp. dürfen in Spalte 0 nur Ganzzahlen, in 1 String, in 2 diverse Zahlen... eingetragen werden:

```
public Class<?> getColumnClass(int columnIndex) {
	switch (columnIndex) {
		case 0: return Integer.class;
		case 1: return String.class;
		case 2: return Double.class;
		default: return Object.class;
	}
}
```


----------



## Tallan (18. Nov 2009)

Michael... hat gesagt.:


> Mit welchem TableModel arbeitest Du? Wenn Du mit AbstractTableModel, DefaultTableModel o.ä.
> arbeitest kannst Du mit der Methode
> 
> 
> ...



genial das ist noch viel effektiver danke


ich hatte es derweile mit 


```
try
					{
						
						Integer.parseInt(value);
					}
					catch(NumberFormatException e)
					{
						System.out.println("Kein Integer!");
						e.printStackTrace();
					}
```

Versucht, hierbei wurde allerdings trotz des catch eine NumberFormatException ausgeworfen weiß jemand warum?


----------



## eRaaaa (18. Nov 2009)

e.printStackTrace();


----------

