HashDatenstruktur

Dogge

Aktives Mitglied
Tag, bin neu hier und hab schon ein Problemchen:
Ich versuche den Java-Code zu kompilieren(unten).Ohne System.out... funktioniert es, aber mit nicht.
Möchte gern den 4.ten Kreis ausgeben. Also x,y Koordinaten.

Java:
public class HashDatenstruktur extends java.util.Hashtable
{
     public static void main(String[] args)
     {
         java.util.Hashtable kreise = new java.util.Hashtable();
         
         for(int i = 1; i<7; i++)
         {kreise.put(new Integer(i), new Kreis(i, i, i));
         }
         
     
         System.out.println(kreise.get(4));
         
         
     }          
    

         
}
[/Java]
 
N

nillehammer

Gast
Bin mir bei Autoboxing/unboxing nicht immer so sicher, aber probier mal das:
Java:
System.out.println(kreise.get(Integer.valueOf(4)));
Die Factory-Methode valueOf ist dem Konstruktor übrigens immer vorzuziehen, wenn man nicht explizit ein neues Integer-Objekt braucht (was eigentlich nie der Fall ist).
 

Dogge

Aktives Mitglied
Danke Nillehammer. Es funktioniert leider nicht. Bei meiner for-Schleife verwende ich anonyme Objekte.
[Java] kreise.put(new Integer(i), new Kreis(i, i, i));[/Java]
Bei diesen ist der Bezeichner unbekannt. Könnte es daran liegen?
 
S

SlaterB

Gast
was ist denn 'es'?
gibt es aktuell noch irgendein Problem der großen drei
- Compiler-Fehler
- Exception zur Laufzeit
- fachliches Fehlverhalten
und wenn ja was genau?
 

Dogge

Aktives Mitglied
Natürch die Fehlermeldung:
Zeile 12:cannot resolve the symbol
symbol:method valueOf (int)
location: class java.lang.Integer
Punkt(.) nach Integer bei System.out.. wird markiert

Jap SlaterB Es = CompilerProblem
 
S

SlaterB

Gast
hui, benutzt du uraltes Java oder eine Mini-Version für Handys oder so?
na wenn new Integer() geht, dann nimm doch das

ok, erst ab Java 1.5 dabei wo es auch Autoboxing gibt
 

Dogge

Aktives Mitglied
So, habs hinbekommen. Ich stell die Lösung rein, muss aber auf die schöne for-Schleife verzichten.
Würde mich freuen, falls jemand eine funktionierende Alternative hat(mit Schleife, ähnlich wie am Anfang).
Java:
public class HashDatenstruktur extends java.util.Hashtable
{
     public static void main(String[] args)
     {   Integer a = new Integer(1);
         Integer b = new Integer(2);
         Integer c = new Integer(3);
         Integer d = new Integer(4);
         Integer e = new Integer(5);
         Integer f = new Integer(6);
         java.util.Hashtable kreise = new java.util.Hashtable();
         
         kreise.put(a, new Kreis(12, 12, 23));
         kreise.put(b, new Kreis(34, 54, 43));
         kreise.put(c, new Kreis(56, 54, 78));
         kreise.put(d, new Kreis(44, 67, 89));
         kreise.put(e, new Kreis(98, 35, 85));
         kreise.put(f, new Kreis(64, 56, 89));
         
         Kreis hashi = (Kreis)kreise.get(d);
         System.out.println(hashi);
         
         
         
         
         
     
         
         
         
     }          
    

         
}

Jetzt noch Klasse Kreis:
[Java]public class Kreis extends Figur
{



private int radius;
private double umfang;
private double flaeche;
public final double PI = 3.14159;
private static int kreisZaehler=0;

public void setRadius(int Wert)
{ radius = Wert;
}

public int getradius()
{
return radius;
}

public double getFlaeche()
{
return PI*radius*radius;
}

public double getUmfang()
{
return 2*PI*radius;


}

public static int getKreisZaehler()
{
return kreisZaehler;
}
public Kreis(int x, int y, int radius)
{
this.x = x;
this.y = y;
this.radius = radius;
kreisZaehler++;
}

public void zeichne(java.awt.Graphics g)
{
g.drawOval(x-radius, y-radius, 2*radius, 2*radius);
}


public void skaliere(int deltaradius)
{
radius += deltaradius;
}
public String toString()
{
return "Kreis - Mittelpunkt " + x + "/" + y + " , Radius" + radius ;
}
}
[/Java]
Und Figur:
[Java]public abstract class Figur extends Object
{
protected int x;
protected int y;
protected int radius;
public int getX()
{
return x;
}
public int getY()
{
return y;
}

public void bewege(int deltaX, int deltaY)
{
x += deltaX;
y += deltaY;
}
public abstract void skaliere(int delta);
public abstract void zeichne(java.awt.Graphics g);
public abstract double getFlaeche();
public abstract double getUmfang();

}[/code]
PS: Ich nutze IDK 1.2(1.5 muss ich mir noch verdienen:rtfm:)
 
S

SlaterB

Gast
du hattest doch vorher eine Schleife, was spricht dagegen?
nur weil du d wieder als Key brauchst?
kannst doch später auch wieder neu [c]new Integer(was auch immer)[/c] schreiben
 

Neue Themen


Oben