# HashDatenstruktur



## Dogge (18. Apr 2012)

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.


```
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]
```


----------



## nillehammer (18. Apr 2012)

Bin mir bei Autoboxing/unboxing nicht immer so sicher, aber probier mal das:

```
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).


----------



## SlaterB (18. Apr 2012)

auch immer Fehlermeldungen dazuposten


----------



## Dogge (18. Apr 2012)

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?


----------



## SlaterB (18. Apr 2012)

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 (18. Apr 2012)

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


----------



## Landei (18. Apr 2012)

Lass mich raten, es wird etwas wie [c]Kreis@345654[/c] angezeigt?


----------



## SlaterB (18. Apr 2012)

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 (18. Apr 2012)

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).
	
	
	
	





```
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


----------



## SlaterB (18. Apr 2012)

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


----------

