WinFuture-Forum.de: Java Problem... - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Java Problem...


#1 Mitglied ist offline   LoD14 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.931
  • Beigetreten: 04. Mai 03
  • Reputation: 45
  • Wohnort:Hennef bei Köln

geschrieben 24. Oktober 2007 - 21:47

nabend,

ich hab ein problem in java...

ich muss als übung ne objektverwaltung coden... naja, egal, also objekte sind soweit gemacht... ich erstell also meine objekte und die sind uach da etc.

jetzt das problem.

ich soll ne suche coden. aber das krieg ich net gebacken... meine objekte sehen so aus:

Line b = new Line (1, 13,14,15,16,17,18, "Dieter");

die haben alle ne durchlaufende ID nummerung, aber ich kann die objekte einfach nicht der reihe nach durchlaufen. also die namen der objekte sind unterschiedlich, die heißen a, b, c, ef, jk, und so weiter.

wie kann ich die alle der reihe nach durchlaufen? meine bisherige idee ist, nen treeset, ne liste oder arraylist oder sowas zu machen, und dann immer im array die objektnamen abzulegen, wenn ein objekt angelegt wurde und dann immer die liste zu durchlaufen, da die namen abzurufen und dann das objekt checken... nur das ist soviel aufwand oO

//Edit.

ich habs glaub ich rausgefunden, wie es geht. ich hab mir jetzt nen treeset gemacht und meine objekte darin abgelegt... nur hab ihc ein problem... wenn ich nur 1 objekt in den treeset gebe, funktioniert alles... geb ich 2 objekte rein, stürzt alles ab... leider ohne aussagekräftige fehlermeldung außer "fatal exception" oder sowat...

hierdrinne stürzt er ab. kommentiert man das 2. objekt aus, was hinzugefügt wird bei baum.add, funktioniert alles.
import java.util.Iterator;
import java.util.TreeSet;

public class Main {

public static void main (String args[]){

		TreeSet baum = new TreeSet();
		//Neuer Punkt (ID, x, y, z, Name)
		
		Point a = new Point(1, 12,12,12, "Hans");
		baum.add(a);
		Point b = new Point(4, 11,11,11, "Blubb");
		baum.add(b);
	}
}


das ist der objekt code, ka ob der wichtig ist^^
public class Point extends Objekt
{
	private int x;
	private int y;
	private int z;
	private int Punkt;
	private String Name;


	public Point(int id, int x_coord, int y_coord, int z_coord, String Name) 
	
	{
		super(id);
		this.x = x_coord;
		this.y = y_coord;
		this.z = z_coord;
		this.Name = Name;

		
	}
	
	public Point(int id, int x_coord, int y_coord,int z_coord, int Punkt) 
	
	{
		super(id);
		this.x = x_coord;
		this.y = y_coord;
		this.z = z_coord;
		this.Punkt = Punkt;
		
	}
	
	public String toString()
	{
		String tmp;
		tmp = ("Der Punkt mit der ID " + id  + " liegt bei " + x + " " + y + " " + z + "." + " Sein Name: " +Name );
		if (Punkt == 1) {tmp = x + " " + y + " " + z;};
		if (Punkt == 2) {tmp = "Ein Linienpunkt " + "liegt bei " + x + " " + y + " " + z + ".";};
		return tmp;
	}
	
	public void getPoint_x() 
	{
		System.out.println("Die x-Koordinate des Punktes ist" + x);
	}	
}


Das einzgie was der Compiter sagt (neben dem absturzt das JVM:

java.lang.ClassCastException
at java.util.TreeMap.compare(Unknown Source)
at java.util.TreeMap.put(Unknown Source)
at java.util.TreeSet.add(Unknown Source)
at Main.main(Main.java:16)
Exception in thread "main"

Mir fällt da grad ein... kann es sein, dass mir das ding abesemmelt, weil ich kein comperator interface hab? und der sich todsortiert beim treeset?

danke im vorraus,
lod14

Dieser Beitrag wurde von LoD14 bearbeitet: 24. Oktober 2007 - 23:12

0

Anzeige



#2 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.947
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 25. Oktober 2007 - 07:03

Zitat

neben dem absturzt das JVM

Das bezweifle ich. Das ist "nur" eine Exception. :huh:

Zitat

kann es sein, dass mir das ding abesemmelt, weil ich kein comperator interface hab

Yep, alle Objekte die du dem Set hinzufügst müssen das Interface Comparable implementieren.

Zudem würde ich hier auch mit generischen Listen arbeiten, da du sonst "unchecked Warnings" bekommst und zudem beim Auslesen casten darfst.
0

#3 Mitglied ist offline   LoD14 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.931
  • Beigetreten: 04. Mai 03
  • Reputation: 45
  • Wohnort:Hennef bei Köln

geschrieben 25. Oktober 2007 - 12:09

Zitat

Das bezweifle ich. Das ist "nur" eine Exception. wink.gif

ne, war ein echter absturzt der ganzen vm. kein plan, was eclipse da verbrochen hat...


Zitat

Zudem würde ich hier auch mit generischen Listen arbeiten, da du sonst "unchecked Warnings" bekommst und zudem beim Auslesen casten darfst.


da ich heut morgen eine stunde am bahnhof aufn zug warten und dann noch ne stunde fahren durfe, hab ichs jetzt neu gecodet mit nem treeset. geht irgendwie deutlich reibungsloser jetzt... danke für die hilfe :huh:
0

#4 Mitglied ist offline   LoD14 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.931
  • Beigetreten: 04. Mai 03
  • Reputation: 45
  • Wohnort:Hennef bei Köln

geschrieben 01. November 2007 - 14:38

ich hab nochmal ein problem mit dem programm. wir müssen das jetzt serialisieren. aber das will überhaupt nicht.

Zitat

public static void speichern()
{
ObjectOutputStream oos = null;
try
{
ObjectOutputStream oos = null;
try
{
oos = new ObjectOutputStream(new FileOutputStream("test.ser"));
for (int i = 0; i < baum.size(); i++)
{
//Object a = (Objekt) baum.get(i);
System.out.println("...");
oos.writeObject((baum.get(i)));
System.out.println("Test");
}
oos.close();

}
catch (FileNotFoundException e)
{
System.out.println("File not found kaputt...");
}
catch (IOException e)
{
System.out.println("IOExecption kaputt...");
}
}


oos.writeObject((baum.get(i))); <- an dieser stelle wirft der immer ein io-exception.

ich versteh nur nicht so ganz warum. ich dachte zuerst, es liegt daran, dass ich mir die objekte falsch aus dem baum hole, aber selbst wenn ich mir vorher ein neues objekt vom typ linie erzeuge und nur dieses objekt direkt übergebe, wirft der mir auch die exception. die schleiße läuft nicht einmal durch, schon beim ersten durchlauf kommt die exception.
0

#5 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.947
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 02. November 2007 - 15:45

Kannst du mal die ganze Exception posten? e.getMessage();
0

#6 Mitglied ist offline   LoD14 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.931
  • Beigetreten: 04. Mai 03
  • Reputation: 45
  • Wohnort:Hennef bei Köln

geschrieben 02. November 2007 - 18:31

@witi: danke für deine mühe, aber der fehler war banaler als ich dachte. cih hatte einfach das implements serializable in die objekte zu implementieren -.-
0

#7 Mitglied ist offline   LoD14 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.931
  • Beigetreten: 04. Mai 03
  • Reputation: 45
  • Wohnort:Hennef bei Köln

geschrieben 07. November 2007 - 18:58

ich sitz hier grad an der GUI zu dem ding. das läuft auch alles ganz gut, aber ich hab ein problem. wenn ich das programm starte, sind die fenster erst leer!? dann muss ich auf den ramen klicken oder das fenster größer/kleiner machen und dann tauchen die elemente auf. (geht alles über swing)

komisch ist nur, ich dachte ich hätte bei der reihenfolge geschludert, in der die objekte dazukommen und hatte nochmal alles von grund auf neugeschrieben. hatten dann erst meine 3 JTextField hinzugefügt und kompiliert und alle 3 waren von anfang an sichtbar. dann hab ich noch 3 JLabel hinzugefügt (für jedes JTextField eins). und die objekte untereinander erzeugt und untereinander in den container gepackt.

also
final JTextField get_x = new JTextField(10);
get_panel.add(get_x)

und nachher

JLabel label_x = new JLabel("Bitte x-Koordinate eingeben:");
final JTextField get_x = new JTextField(10);
get_panel.add(label_x)
get_panel.add(get_x)


und plötzlich, nachdem ich das gemacht hab, ist das fenster beim starten wie vorher leer geblieben und ich musste es erst vergrößer oder verkleiner, dass die objekte auftauchen.

ich find aber auch keine hinweise in meinen unterlagen und büchern. und ich versteh jetzt nicht, wieso die vorher auftauchen und tu ich die labels dazu kommt nichts.

gibts irgend nen befehl, dass sich die fenster von selber aktualisieren oder so?

danke im vorraus.
0

#8 Mitglied ist offline   G.I.Joe 

  • Gruppe: aktive Mitglieder
  • Beiträge: 978
  • Beigetreten: 19. September 04
  • Reputation: 0

geschrieben 07. November 2007 - 21:44

Probiers mal mit .validate(). Aber eigentlich sollte das Fenster direkt nach dem Sichtbarsetzen korrekt angezeigt werden, achte darauf setVisible(true) möglichst ans Ende zu setzen.
Eingefügtes Bild Eingefügtes Bild
0

#9 Mitglied ist offline   LoD14 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.931
  • Beigetreten: 04. Mai 03
  • Reputation: 45
  • Wohnort:Hennef bei Köln

geschrieben 08. November 2007 - 08:46

ah, dann hab cih das visible(true) vermutlich zu früh gesetzt, muss mri das gleich mal anschaun.

edit: ja, war das problem. hatte visible(true) tatsächlich zu früh gesetzt. danke!

Dieser Beitrag wurde von LoD14 bearbeitet: 08. November 2007 - 09:34

0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0