Object nach int umwandeln

Status
Nicht offen für weitere Antworten.
Hi Java-Forum!

Folgendes Problem: ich möchte Object nach int umwandeln. Warum der Umstand? Weil ich eine JTable habe, die int-Werte speichern soll. Da die JTable int ohne weitere nicht speichert, habe ich die int-Werte im Object-Format in die Tabelle eingefügt. Ok, nun muß ich die int-Werte aber zurückumwandeln. Wie geht das? Viel ausprobiert, alles nicht geklappt. Oder geht das auch einfacher? :roll:
 
Was hast du denn ausprobiert?
Wie hast du das abgespeichert?

Und schlussendlich: kennst du den Cast:
Code:
Integer integer = new Integer( 123 );
Object object = integer; 

Integer value = (Integer)object; // Das ist ein Cast
 
Wow, was für eine Antwortgeschwindigkeit :shock: 🙂

Ich hab eine JTable, die int-Werte haben soll und die ich auslesen muß.
So sieht mein "Krücken"-Kode bis jetzt aus:

Code:
static JTable tabelle = new JTable (20,20); // Tabelle gebildet
tabelle.setValueAt("200", 0, 0); // int-Werte im Object-Format eingefügt
tabelle.setValueAt("35",  1, 0);

Integer xxx = Integer.valueOf(tabelle.getValueAt(0,1)); // Umwandlung Object nach Integer
	
int tab_wert = xxx.intValue(); // Umwandlung Integer nach int
// KLAPPT NICHT!!!
 
Hmmmm..Versuchs mal so:
Code:
int tab_wert = Integer.parseInt((String) tabelle.getValueAt(0,1));
 
2 meez:

Bingo! Das klappt!! Wie bist du da drauf gekommen?

Ich hatte zuvor auch dies ausprobiert, was nicht geklappt hat:

Code:
int tab_wert = Integer.parse(tabelle.getValueAt(0, 0));

Danke! :toll:
 
Hi!

Und dann heißt es nachher wieder Java sei langsam. :roll: :wink:
Machs bitte so wie Beni es geschrieben hat, sprich speichere die ints als Integer Objekte und nicht als String.

Gruß Jaraz
 
Jaraz hat gesagt.:
Hi!

Machs bitte so wie Beni es geschrieben hat, sprich speichere die ints als Integer Objekte und nicht als String.

Gruß Jaraz

Würd ich schon auch so machen:

Code:
tabelle.setValueAt(new Integer(200), 0, 0); 
int tab_wert = ((Integer) tabelle.getValueAt(0,0)).intValue();

Einfach wegen der Uebersicht....Performancemässig machts wohl nichts aus...
 
Danke, es klappt.

Aber einfacher ginge es, wenn ich in die Tabelle int-Werte einfügen könnte. Auf dem direkten Wege

Code:
int zahl = 200;
tabelle.setValueAt(zahl, 0, 0);

geht dat ja nicht. Kann jemand weiter helfen?
 
Also "int" ist ein primitiver Datentyp, deshalb wird man immer eine Umwandlung benötigen.

Wenn du das TableModel selbst implementierst (bzw. vom DefaultTableModel erbst), kannst du ja eine Methode machen, die die Umwandlung vornimmt. Es gibt immer noch eine Umwandlung, aber sie muss dich nicht mehr stören:

Code:
public class Model extends DefaultTableModel{
  public void setValueAt( int value, int row, int column ){
    setValueAt( new Integer( value ), row, column );
  }

  public int getIntValueAt( int row, int column ){
    return ((Integer)getValueAt( row, column )).intValue(); 
  }
}


Code:
Model model = ...

model.setValueAt(  123, 0, 0 );
int value = model.getIntValueAt( 0, 0 );
 
Also nur mal so generell:
Auf einer Oberfläche (wie es auch eine Tabelle ist) kann man nur Strings ausgeben.

Typecasting ("Umwandlung") in der Regel mit Klammern:
Code:
(Zieldatentyp)(Wert);
Um Strings die eine Zahl enthalten in einen Zahlen- Datentyp umzuwandeln benötigt man eine Methode:
Code:
// Beispiel bei int
Integer.parseInt("String");

Ist oft auch sinnvoll das ganze mit try-catch zu umgeben, da ein Fehler ausgegeben wird, wenn der String keine Zahl ist oder die Typen nicht mit einander vereinbar sind.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben