Color Map

pisco

Bekanntes Mitglied
Hey Leute,

ich bin gerade dabei mir rekursion beizubringen und spiel mich mit diesem code herum:

Java:
	public HashMap<String, Integer> countColors() {
		
		if(null != this.content){
			HashMap<String, Integer> map = this.content.countColours();
			if(map.containsKey(this.color)){
				int oldChar = map.get(this.color);
				map.put(this.color, oldChar+1);
			} else {
				map.put(this.color, 1);
			}
			return map;
			
		} else {
			HashMap<String, Integer> map = new HashMap<String, Integer>;
			map.put(this.color, 1 );
			return map;
		}
		
		
	}

ich bekomme aber immer nur null. Eigentlich sollte ich die color der Box herauskriegen...

warum krieg ich immer null?

Ich bedank mich schonmal für eure Antwort ;D

gruss
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
wo bekommst du null, als Rückgabewert der Methode?, das ist zu bezweifeln,
da kommt entweder die neu angelegte Map (die nicht gespeichert wird), die vorhandene Map
oder ein NullPointerException wenn die vorhandene Map null ist (edit: ok, letzteres ist die Rekursion, also eher auch nicht möglich)

was an Color alles gespeichert wird tut anscheinend nicht zur Sache oder geht es darum?
es wird aber letztlich im geposteten Code gar nichts abgefragt
 

pisco

Bekanntes Mitglied
Java:
import java.util.HashMap;
public class Box {
	
	private String color;	
	private Box content;
	
	public Box(String color) {
		this.color = color;
	}
	
	public void insert(Box box) {	
		this.content = box;
	}
	
	public String getMostFrequentColor() {
		

		return null;	
		
	}
	
	public HashMap<String, Integer> countColors() {
		
		if(null != this.content){
			HashMap<String,Integer> map =   
			this.content.countColors(); 
			
			if(map.containsKey(this.color))
			{
				int a = map.get(this.color);
				map.put(this.color, a + 1);
			}
			else
			{
				map.put(this.color, 1);
			}
			return map;
			
		}
		else
		{
			HashMap<String,Integer> map = new HashMap<String,Integer>();
			map.put(this.color, 1);
			return map;
		}
}

hier ist der restliche code... das die map null zurückgibt ,denk ich eher nicht... habs sie ja erzeigt und gespeicher oder irre ich mich da?

gruss und danke nochmals...
 
S

SlaterB

Gast
nochmal: was ist die Frage, an welcher Stelle bekommst du null, was erwartest du stattdessen?
 

pisco

Bekanntes Mitglied
also erwarten tu ich das ich:

zBsp.: red zurück bekomme aus der main, welches in der main so übergeben wird:

Box whiteBox1 = new Box("white");
Box redBox1 = new Box("red");
Box greenBox1 = new Box("green");
Box redBox2 = new Box("red");

....

an welcher Stelle ich null bekomm is mir komplett unklar...

gruss
 

chalkbag

Bekanntes Mitglied
Kannst du mir dein Main Programm geben, dann verstehe ich vielleicht was du machen willst und spring schnell mit dem Debugger drüber.

Grüße
 
S

SlaterB

Gast
was haben die Aufrufe
Box whiteBox1 = new Box("white");
Box redBox1 = new Box("red");
Box greenBox1 = new Box("green");
Box redBox2 = new Box("red");

auf einmal mit der Map-Methode zu tun?
dass du nicht weißt, wo du null bekommst, steht im Widerspruch zu deiner ursprünglichen Frage 'warum krieg ich immer null?',
denn die Voraussetzung für diese Frage ist, erstmal FESTZUSTELLEN, dass ein Ding namens 'null' irgendwo auftaucht

ich verstehe ich dich wohl einfach überall falsch,
damit es mal vorangeht hier ein Testprogramm:
Java:
public class Test
{
    public static void main(String[] args)
    {
        Box whiteBox1 = new Box("white");
        Box redBox1 = new Box("red");
        Box redBox2 = new Box("red");
        redBox1.insert(whiteBox1);
        redBox2.insert(redBox1);

        HashMap<String, Integer> m = redBox2.countColors();
        System.out.println("map: ");
        for (String key : m.keySet())
        {
            System.out.println(key + " -> " + m.get(key));
        }
    }
}

class Box
{
    private String color;
    private Box content;

    public Box(String color)
    {
        this.color = color;
    }

    public void insert(Box box)
    {
        this.content = box;
    }

    public String getMostFrequentColor()
    {
        return null;
    }

    public HashMap<String, Integer> countColors()
    {

        if (null != this.content)
        {
            HashMap<String, Integer> map = this.content.countColors();

            if (map.containsKey(this.color))
            {
                int a = map.get(this.color);
                map.put(this.color, a + 1);
            }
            else
            {
                map.put(this.color, 1);
            }
            return map;

        }
        else
        {
            HashMap<String, Integer> map = new HashMap<String, Integer>();
            map.put(this.color, 1);
            return map;
        }
    }
}
Ausgabe:
Code:
map: 
red -> 2
white -> 1
sieht doch alles recht funktional aus
 

pisco

Bekanntes Mitglied
gut... danke erstmal für deine Antwort:

also ich denke damit wir nicht ganz aneinander vorbeireden post ich auch mal meine main:

Java:
public class BoxTester {
	
	public static void main(String[] args) {
	
		/*
		 * Fall 1
		 * "red" ist die am häufigsten vorkommende Farbe
		 */
		{
			Box whiteBox1 = new Box("white");
			Box redBox1 = new Box("red");
			Box redBox2 = new Box("red");
			Box greenBox1 = new Box("green");
			
			
			greenBox1.insert(redBox2);
			redBox1.insert(greenBox1);
			whiteBox1.insert(redBox1);
			
			System.out.println(whiteBox1.getMostFrequentColor());
		}
		
	}
	
}

null hab ich aus dem Grund bekommen ,da ichs compiliert und ausgeführt habe... nur weis ich nicht wo es im code steht das ich null krieg...
 

xehpuk

Top Contributor
[JAVA=15] public String getMostFrequentColor() {


return null; // <-- sieht stark danach aus, als würde hier null zurückgegeben werden

}[/code]
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
yoskaem Text Color durch Klicken eines Buttons in anderer Activity ändern Java Basics - Anfänger-Themen 2
T JSP, Button-Color change. Java Basics - Anfänger-Themen 1
N Erste Schritte HSV color space - schwarz und weiß nur anhand von Saturation oder Multiplikator ermitteln Java Basics - Anfänger-Themen 14
R Rainbow color Java Basics - Anfänger-Themen 11
M Farben/Color Abfragen von Farben innerhalb einer Methode Java Basics - Anfänger-Themen 9
M int mit Color vergleichen? Java Basics - Anfänger-Themen 7
F Color Map .map-Datei nutzen Java Basics - Anfänger-Themen 4
Spin Backgrond Color von Image ermitteln Java Basics - Anfänger-Themen 2
M JComboBox => Item String => Color Java Basics - Anfänger-Themen 2
J Datentypen Color.invisible? Java Basics - Anfänger-Themen 24
J Color cannot be resolved to a type Java Basics - Anfänger-Themen 4
O Probleme mit void java.awt.Component.setBackground(Color c) Java Basics - Anfänger-Themen 2
W Average-Color (Durchschnittsfarbe eines Bildes ermitteln) Java Basics - Anfänger-Themen 16
R Foreground Color ändert sich nicht Java Basics - Anfänger-Themen 5
I Color-Objekt neuen Wert zuweisen Java Basics - Anfänger-Themen 3
P Setforeground(color red) will nicht Java Basics - Anfänger-Themen 5
Developer_X Color - set... Java Basics - Anfänger-Themen 6
J JTextField Standardborder Color ändern Java Basics - Anfänger-Themen 2
K Unterschied zwischen Color.white und Color.WHITE? Java Basics - Anfänger-Themen 4
G Font Color von JLabel verändern Java Basics - Anfänger-Themen 1
D Color in Hex-Code wandeln Java Basics - Anfänger-Themen 2
P Color (RETURN) Funktion brauche Idee. Java Basics - Anfänger-Themen 2
G Color Java Basics - Anfänger-Themen 8
G Probleme mit Colour und Color, umwandlung möglich? Java Basics - Anfänger-Themen 5
E color vergleichen? Java Basics - Anfänger-Themen 12
G Color und String serialisieren Java Basics - Anfänger-Themen 2
V Color mit int Werten bestimmen Java Basics - Anfänger-Themen 2
C font color Java Basics - Anfänger-Themen 5
C Ausblenden von Color ? Java Basics - Anfänger-Themen 4
C g.setColor (Color.VARIABLE); Java Basics - Anfänger-Themen 6
T Color aus einen String Java Basics - Anfänger-Themen 5

Ähnliche Java Themen


Oben