prob mit einer matrix.ha

Status
Nicht offen für weitere Antworten.

Kitkat

Mitglied
guten abend zusammen!

ich habe hier erneut ein prob :-/
und zwar geht es um eine matrix:

Code:
public class MainVektor 
{
	static int w;           
	static int h;          
    static int[] rgb;
    static int rows;
    static Integer zahl;
	static HashMap map = new HashMap();
	
//____________________________________________________________________________________________
	
	public static void main(String[] args)
	{	
		int counter = 0;
		String stringValue;
		
		BufferedImage img = loadTheImage();
		
		w = img.getWidth(null);
		h = img.getHeight(null);
		
		MainVektor rgbVektor = new MainVektor(rows);
		
		System.out.println("width: " + w);
		System.out.println("height: " + h);
		System.out.println();
		
		for(int y=0; y<h; y++)
		{
			for(int x=0; x<w; x++)
	         {
	            int argb = ((BufferedImage) img).getRGB(x, y);     

	            int red   = (argb >> 16) & 0xff;
	            int green = (argb >> 8)  & 0xff;
	            int blue  = (argb)       & 0xff;            
	           	            
	            rgbVektor.setElem(0, red);
	            rgbVektor.setElem(1, green);
	            rgbVektor.setElem(2, blue);
	            
	    	    for(int i=0 ; i < rows ; i++)
	    	    {
	    	        System.out.print(rgbVektor.getElem(i) + "\t");
	    	        System.out.println(")");
	    	    }
	            
	            stringValue = Integer.toString(counter);
	            map.put(rgb, stringValue);
	            counter++;
	         }
				
				//farbenAuswerten();
			}
		}
	
// KONSTRUKTOREN____________________________________________________________________________________	
	
	public MainVektor(int lines)
    {
    	rows = lines;
        rgb = new int [rows];
    }
	
	public MainVektor(int lines, int[] values)
    	throws IllegalArgumentException
{
    if(lines > values.length)
           throw new IllegalArgumentException("Es fehlen Elemente zur Initialisierung der Matrix.");
   
      rows = lines;
    
      rgb = new int[rows];
      
      int t=0;
     
      for(int i=0 ; i < rows ; i++)
           rgb[i] = values[t++];
}
	
    public int getElem(int i)
    {
        return rgb[i];
    }
    
    public static void setElem(int j, int value)
    {
        rgb[j] = value;
    }


ich weiß nicht weiter... was ich möchte ist folgendes:
ich möchte die farbwerte red, green, blue jedes pixels einzeln als dreierkombi in eine matrix schreiben (also ein eindimensionales array besser gesagt). dann möchte ich dieses ausgeben, ziel ist es, nachher die verschiedenen arrays auf gleichheit zu prüfen...

wenn ich nun das programm starte zeigt er mir folgenden fehler:
java.lang.ArrayIndexOutOfBoundsException (in der zeile "rgb[j] = value;" der funktion setElem) aber warum?!

ich hoffe mir kann jemand helfen!
vielen dank im voraus!

lg katha
 

AlArenal

Top Contributor
Ja warum gibt es wohl eine ArrayOutOfBoundsException? Einzig logische Antwort: Weil dein Index außerhalb der Grenzen des Arrays liegt. Da kommen unr zwei Fehlerquellen in Frage: Die Array-Initialisierung und der Index.

Darauf kann man aber mit bloßer Übersetzung des Exception-Namens auch selbst kommen. Das Debuggen musst du schon selbst erledigen.
 
J

Jgast

Gast
@Kitkat: Nix starten... nimm den debugger... nutze eclipse und alles wird gut! Wenn du damit nich weiterkommst dann schreib nochmal was...
 
G

Guest

Gast
danke für die antworten erstmal.
ich dachte man wäre hier bei den anfängerfragen und da könne man keine "blöden" fragen stellen... scheinbar doch. beim nächsten mal werd ich, auch wenn ich noch so lange verzweifelt selber suche erstmal nicht schreiben, bevor ich so ne echt nette antwort nochmal bekomm...

lg katha
 
S

SlaterB

Gast
die Antworten waren vielleicht nicht stilistisch die freundlichsten,
aber informationsreich und konstruktiv,
auf jeden Fall als Hilfe gedacht, warum sollte sich sonst jemand die Mühe machen?

also damit leben und konstruktiv weiterfragen ('was ist ein Debugger?')
oder beleidigt von dannen ziehen..
 

Kitkat

Mitglied
hallo zusammen,

ja ist richtig. ich dachte mir nur in dem moment: wenn ich selber nicht ewigkeiten den fehler analysiert hätte, hätte ich hier schließlich nicht gepostet... sorry für den beitrag. bin ja schließlich dankbar für die hilfe udn hoffe auch auf solche.

ich bin nun vorhin auch ein stück weitergekommen.

Code:
                MainVektor rgbVektor = new MainVektor(w);
		int counter = 0;
		String stringValue;
		
		for(int y=0; y<h; y++)
		{
			for(int x=0; x<w; x++)
	         {
	            int argb = ((BufferedImage) img).getRGB(x, y);     

	            int red   = (argb >> 16) & 0xff;
	            int green = (argb >> 8)  & 0xff;
	            int blue  = (argb)       & 0xff;            
	           	            
	            rgbVektor.setElem(0, red);
	            rgbVektor.setElem(1, green);
	            rgbVektor.setElem(2, blue);
	            
	    	    stringValue = Integer.toString(counter);
	            map.put(rgbVektor, stringValue);
	            counter++;
	         }
			}
		farbenAuswerten();

nun möchte ich die einzelnen elemente der hasmap ausgeben, das klappt irgendwie nicht... und wenn ich dann die größe ausgeben lassen will, sagt er mi ich hätte nur ein element in der hashmap.

Code:
static void farbenAuswerten()
	{
		//System.out.print("Elemente:");
		Iterator itr = map.values().iterator();
		
		System.out.println( "Anzahl Einträge: " + map.size() );
		
		while (itr.hasNext()) 
		{
			zahl = (Integer)itr.next();
			System.out.print(" " + zahl.intValue());
		}
		System.out.println();
	}
 
S

SlaterB

Gast
das ist doch eine ordentliche Aussage, da muss man sich nicht wundern sondern
(leider ;) ) suchen und verstehen, was das Programm eigentlich macht,

extern kann man das kaum herausfinden, da du mit irgendeinem Bild arbeitest,
außerdem ist der Code so schrecklich, dass du da besser selber durch musst,

so, einen Debugger würde ich wie immer nie vorschlagen,
das geht besser so:
Code:
System.out.println("h: "+h+", w: "+w);
 for(int y=0; y<h; y++)
      {
         for(int x=0; x<w; x++)
            {
               System.out.println("y: "+y+", x: "+x);

               int argb = ((BufferedImage) img).getRGB(x, y);     

               int red   = (argb >> 16) & 0xff;
               int green = (argb >> 8)  & 0xff;
               int blue  = (argb)       & 0xff;           
                            
               rgbVektor.setElem(0, red);
               rgbVektor.setElem(1, green);
               rgbVektor.setElem(2, blue);
              
              stringValue = Integer.toString(counter);
               System.out.println("neuer Map-Eintrag: key ist "+
                    rgbVector.getEindeutigeBeschreibung()+
                    ", Value ist: "+stringValue);
               map.put(rgbVektor, stringValue);
               counter++;
               System.out.println("map.values.size nun: "+
                    map.values.size()+", counter: "+counter);
            }
         }
      farbenAuswerten();

die Operation
getEindeutigeBeschreibung()
musst du sinnvoll selber schreiben, um zu schauen, was da der Key ist,
falls sich die Probleme nicht schon allein mit diesen Ausgaben lösen

was sind die Ausgaben im Programmverlauf?
starte mit einen Bild mit 3x3 Zeilen oder noch weniger, nicht 1000x 1000...

----------

Programm selber:
da weiß man kaum wo man anfangen soll,

entferne möglichst die statischen Variablen,
w,h und map werden nur in der main gebraucht? dann definiere sie dort,
die anderen Variablen gehören zu EINEM MainVektor? dann definiere sie nicht-statisch,
je weniger die Variablen global sichtbar sind, desto weniger falsche Zuweisungen
 

Kitkat

Mitglied
hi!

ich hab halt folgendes problem: mit dem counter möchte ich quasi immer automatisch einen neuen schlüssel für die hashmap generieren. da man kein int als schlüssel verwenden kann, konvertiere ich den "counter" in einen string... und den möchte ich als schlüssel verwenden. anders wusste ich mir nicht zu helfen.
gibt es eine andere möglichkeit, einen anderen schlüssel automatisch zu generieren?

lg katha
 
S

SlaterB

Gast
es gibt andere Wege, je nach Einsatzgebiet,
ein counter ist aber gar nicht schlecht,
alternativ zum String vielleicht ein Integer-Objekt?
Integer inty = Integer.valueOf(int);

in der farbenAuswerten-Operation schaust du dir die Values an
und gehts davon aus dass da Integer-Objekte drin sind?!

und überhaupt:
du benutzt die Counter derzeit doch als VALUE und nicht als KEY?! ;)
 

kleiner_held

Top Contributor
1. Wenn du für eine Map einen Zahlenwert als Schlüssel willst, dann nimm die Klasse Integer
2. bei Map.put zuerst den Schlüssel angeben und als 2tes den Wert
3. Wenn Du, wie in deinem Beispiel, einen durchgängigen Counter von 0 bis X hast, brauchst Du nicht unbedingt eine Map sondern kannst gleich eine Liste nehmen
3. In deiner Schleife musst Du immer ein neues MainVektor Objekt anlegen, ansonsten änderst du die Werte von den vorhergehenden mit (soll glaube ich nicht so sein).
 
G

Guest

Gast
hallo

ich hatte des überhaupt nicht gemerkt (peinlich), dass ich den schlüssel und den wert vertauscht hatte... danke!
ich komm mit der anweisung Integer inty = Integer.valueOf(int) nicht ganz klar. er möchte dann, dass ich ihm in die klammer einen int-wert (also den counter) und einen string reinpacke?!
und ich komm immer noch nicht richtig damit klar, wie ich die hashmap_einträge ausgebe. da bräucht ich noch hilfe.
also ich nehm dann quasi besser als ausgabe statt dem Integer ein MainVektor-ojekt? da da auch solche in der hash-map abgelegt sind?! aber wenn ich das so programmiere, dann weiß ich nicht wie genau ich das machen muss. etwa so?:

Code:
static void farbenAuswerten()
	{
                MainVektor ausgabe;
				
		Iterator itr = map.values().iterator();
		
		System.out.println( "Anzahl Einträge: " + map.size() );
		
		while (itr.hasNext())
		{
			ausgabe = (MainVektor) itr.next();
			System.out.println(" " + ausgabe);
		}
		System.out.println();
	}


wenn ich das aber mache, hab ich ne ausgabe die ich nicht versteh. wie genau komm ich denn an meine werte ran?

lg katha
 
G

Guest

Gast
und noch ne frage hätte ich zu der hashmap:

kann ich die elemente dann auch zählen? also wie oft jedes vorkommt?
 
S

SlaterB

Gast
> ich komm mit der anweisung Integer inty = Integer.valueOf(int) nicht ganz klar. er möchte dann, dass ich ihm in die klammer einen int-wert (also den counter) und einen string reinpacke?!

ich habe nicht genau die Syntax nachgeschaut,
in der API steht alles erklärt,
was es für Operationen gibt mit welchen Parametern und welchen Zweck

http://java.sun.com/j2se/1.5.0/docs/api/

----------

> also ich nehm dann quasi besser als ausgabe statt dem Integer ein MainVektor-ojekt?

dieser Satz macht keinen Sinn,
man gibt doch das aus was man haben will, und nicht das was besser geht?

wenn ich einen Brief schreibe nehme ich einen Stift und kein Auto, nur weil ich besser fahren kann als einen Stift zu halten..

> dann weiß ich nicht wie genau ich das machen muss. etwa so?:

das ist ein Programm, das etwas tut,
wenn das was es tut, das ist was du willst, dann ist das Programm ideal,
wenn du was anderes willst musst du dir erst mal überlegen was du überhaupt haben willst (ich zumindest weiß es nicht)

> wenn ich das aber mache, hab ich ne ausgabe die ich nicht versteh. wie genau komm ich denn an meine werte ran?

was sind deine Werte? was kommt raus, was verstehst du daran nicht?
tolle Rätselstunde

> und noch ne frage hätte ich zu der hashmap:
> kann ich die elemente dann auch zählen? also wie oft jedes vorkommt?

klar, du holst dir das key-Set, kannst mit einem Iterator zu jedem Key den entsprechenden Value holen und diese zählen,
z.B. in einer zweiten Map

zu jedem Value der ersten Map in der zweiten Map nachschauen,
wenn nix da, dann 1 speichern,
sonst die vorhandene Zahl um 1 erhöhen und wieder abspeichern
 

Kitkat

Mitglied
danke für die tips mit den zwei maps. hab ich so auch gemacht.

zu deinen anmerkungen:

was sind deine Werte? was kommt raus, was verstehst du daran nicht?
tolle Rätselstunde

also ich hab farbwerte. die möchte ich abspeichern in der map, dann zählen wie oft jeder vorkommt udn das ausgeben. wenn ich dies tue bevor ich die werte in die map speicher, hab ich noch dezimalwerte wie 255 etc.
wenn ich aber nun weiter unten die map ausgebe, habe ich werte wie
thesis.MainVektor@10385c1
thesis.MainVektor@42719c
etc. und das ist, was ich nicht verstehe. was sind dies für werte und wo kommen die her?
 
S

SlaterB

Gast
das ist Object.toString(), Klassenname und Hashwert,

was denkst du denn was da erscheinen sollte?
Java weiß das nicht nicht von alleine, wenn du keine explizite Anleitung angibst

für kleine Klassen wie String oder Integer ist klar was rauskommen soll,
aber für ein eigenes Objekt, das 2 Strings enthält?
für eins das 100 Strings enthält?
für eins das andere eigene Objekte enthält, vielleicht gar einen Kreis aus Referenzen?


dann spielt Java zum Glück nicht den Helden, sondern gibt nur nüchtern das aus was du da liest

->
toString überschreiben oder sonst was machen,
System.out.println("mein Object: "+meinObject.getName());
 

Kitkat

Mitglied
guten morgen,

ok, dass hab ich soweit verstanden. und ich hab nun ausprobiert, die toString-methode zu überschreiben. jedoch bräuchte ich da nochmal einen rat. ich hab nun im netz rumgesucht und auch bücher hier gewälzt, jedoch bin ich in java noch nicht wirklich so versiert, als dass ich es allein hinbekommen würde:
ich überschreibe die toString-methode ja mit dem hintergedanken, dass sie mir den hashwert als string ausgibt. nun hab ich schon angefangen:

Code:
public String toString() 
	{
		String print = ("red: " + VektorMap + ", green: " + VektorMap + ", blue: " + VektorMap);
		return print;
		//return MainVektor.toString();
	}

das probelm dass ich nun habe ist, dass ich nicht weiß wie ich das mache, dass er mein VektorMap hier auch erkennt, da es ja nicht global definiert ist. wenn ich das tue (ist aber hier nicht angebracht oder?!) dann meldet er mir einen stackoverflow-error.
wie gehe ich hier am besten vor?

lg katha
 
S

SlaterB

Gast
du kannst doch keine so merkwürdigen Fragen stellen
'VektorMap' tauchte im ganzen Thread bisher noch nicht auf,

keine Ahnung
a.)
was das ist
b.)
wozu du das brauchst
c.)
warum das global oder lokal sein soll
d.)
was das Problem dabei ist

und so weiter und so fort ;)

falls das die Map ist, in der die rgbVektor drin sind,
dann frage ich mich, wieso du diese Map in der toString eines rgbVector brauchst..

toString hat die Aufgabe, das eigene Objekt darzustellen,
dazu braucht man NIE statische Variablen, sondern immer nur die eigenen Exemplarvariablen...

Code:
class Person {

  private String vorname;
  private String nachname;

  public String toString() {
    return "Ich bin eine Person: "+vorname+" "+nachname;
  }
}
 

Kitkat

Mitglied
sorry - mein fehler, war der meinung ich hätte das schon mal drin gehabt. meine aktuelle farbenAuswerten funktion:

Code:
static void farbenAuswerten()
	{
		MainVektor VektorMap, VektorStore;
		
		int counter = 0;
		int[] counterArray = new int [map.size()];
		
		store = map;

		Iterator itrMap = map.values().iterator();
		Iterator itrStore = store.values().iterator();
		
		System.out.println( "Anzahl Einträge map: " + map.size() );
		System.out.println( "Anzahl Einträge store: " + store.size() );
		
		while (itrMap.hasNext())
		{
			VektorMap = (MainVektor)itrMap.next();
			System.out.println(" " + VektorMap.toString());
		}
		System.out.println();
		
		while(itrMap.hasNext())
			for(int i=0; i<counterArray.length; i++)
		{
			VektorMap = (MainVektor)itrMap.next();
			
			while(itrStore.hasNext())
			{
				VektorStore = (MainVektor)itrStore.next();
				
				if(VektorMap.equals(VektorStore))
					counter++;
			}
			counterArray[i] = counter;
		}
		
		for(int j=0; j<counterArray.length; j++)
			System.out.println(counterArray[j]); 
	}
 

Kitkat

Mitglied
zu deiner antwort:
genau das war das problem was ich hatte: ich wollte in meiner toString-methode, dass er da VektorMap reinpackt (das aus der farbenAuswerten methode kommt. jedoch kennt das die methode natürlich nicht. nun hab ich das global definiert, dann kam aber der stackoverflow fehler.
 
S

SlaterB

Gast
es geht um
System.out.println(" " + VektorMap.toString());
?

Variablen unbedingt immer kleine schreiben um sie von Klassen zu unterscheiden,
ein einzelnes Objekt, dass keine Map ist, "Map" zu nennen, grenzt auch schon an Sabotage..

ok, soll wohl ein Vector aus der Map sein..

-------

also in der toString brauchst du die VectorMap-Variable nicht,
die toString ist doch Teil des Objektes, kann auf alles im Objekt zugreifen,
 

Kitkat

Mitglied
ok hab denen nun kleine anfangsbuchstaben gegeben. ich bin da noch relativ neu, drum des öfteren für java-versierte bestimmt komische fragen... sorry dafür.

zu deiner antwort: ich versteh nur noch nicht ganz, wenn er auf alles im objekt zugreifen kann, wie ich ihm "sage", dass ich nun nicht meinen hashwert, sondern dies als string ausgeben möchte?
 
S

SlaterB

Gast
siehe mein Personbeispiel,
wenn es eine Exemplarvariable 'vorname' gibt,
dann kannst du auf diese in toString zugreifen und zurückgeben,
mehr könntest du von außerhalb auch nicht machen!,

schreibe doch mal genauer was du vorhast, wenn du Zugriff auf diese Variable hättest
(könntest du übrigens als Parameter übergeben)

und poste auch die MainVector-Klasse,

(bin erst gegen 20.00 wieder da)
 

Kitkat

Mitglied
ok ich glaub ich hab verstanden was du mit diesem beispiel gemeint hast. hab nun deshlab in die MainVektor-Klasse die int-variablen red, green und blue eingebaut damit ich dann in der toString -methode diese heranziehen kann.

hier ist die methode:

Code:
public class MainVektor extends Object
{         
    int[] rgb;
    int rows;
    static HashMap map = new HashMap();
    static HashMap store = new HashMap(); 
    int red, green, blue;

	public static void main(String[] args)
	{	
		int counter = 0;
		String stringValue;
		
		int w;           
		int h; 
		
		BufferedImage img = loadTheImage();
		
		w = img.getWidth(null);
		h = img.getHeight(null);
		
		System.out.println("width: " + w);
		System.out.println("height: " + h);
		System.out.println();
		
		for(int y=0; y<h; y++)
		{
			for(int x=0; x<w; x++)
	         {
				MainVektor rgbVektor = new MainVektor(w);
				
	                        int argb = ((BufferedImage) img).getRGB(x, y);     

	                         int red   = (argb >> 16) & 0xff;
				
	                         int green = (argb >> 8)  & 0xff;
				
	                         int blue  = (argb)       & 0xff;
				 
	                         rgbVektor.setElem(0, red);
	                         rgbVektor.setElem(1, green);
	                         rgbVektor.setElem(2, blue);
	            
	                        stringValue = Integer.toString(counter);
	                        map.put(stringValue, rgbVektor);
	                        counter++;
	         }
			}
		farbenAuswerten();
		}

public String toString() 
	{
		String print = ("red: " + red  + ", green: " + green + ", blue: " +  blue);
		return print;
	}

hab ich das richtig verstandn, dass ich nun quasi "nur" noch rausfinden muss, wie ich die vektorbestandteile (also von vektorMap aus der farbenAuswerten-methode) in die variablen red, green und blue bekommen muss, damit ich sie mit toString ausgeben kann?

wünsch dir nen schönen tag und danke schonmal!
 
S

SlaterB

Gast
> dass ich nun quasi "nur" noch rausfinden muss, wie ich die
> vektorbestandteile (also von vektorMap aus der
> farbenAuswerten-methode) in die variablen red, green und
> blue bekommen muss

WO sind sie denn in vektorMap?
du rufst doch toString an vektorMap auf, also wenn da was drin ist dann kannst du es mit der toString wie du es oben hast ausgeben,

dein ganzes Gedankenkonstrukt macht keinen Sinn,
zum Vergleich noch mal ein menschlicheres Personenbeispiel:
ein Mensch hat ein Gedächtnis, darin sind Vor- und Nachname gespeichert,
diesen Menschen kann man fragen 'ey, wie heißt du',
der Mensch schaut dann in sein Gedächnis und sagt 'X Y'
fertig

du sprichst immer von irgendwas komisch anderen:
diesen Menschen kann man fragen 'ey, wie heißt du',
der Mensch weiß dann nicht wie er heißt,
damit er sagen kann, wie er heißt, muss man ihm erst einen Menschen (ihn selber) geben,
damit er dem das Gehirn aufschneidet um an den Vor- und Nachnamen zu gelangen

??

jedes Objekt kennt seinen eigenen Inhalt,
wieso willst du unbedingt noch von außen Information dazugeben??
 

Kitkat

Mitglied
ich glaub ich kann mich net richtig ausdrücken:
was ich möchte ist folgendes: ich möchte ein bild auslesen > diese rgb-werte speicher ich in der map ab mit einem schlüssel, der automatich generiert wird (counter); so, nun sind sie in der map und in der farbenAuswerten-methode möchte ich die gespeicherten werte nun nutzen: ich möchte zum einen die werte ausgeben (nicht als hashwert sondern den rgb-wert (also 0-255) und zum anderen habe ich die map kopiert, um dann nach gleichen werten zu suchen: also zählen,. wie oft jede farbe vorkommt. die anzahl ist letztlich das, was mich interessiert und was ich noch weiternutzen möchte.

was ich nun nicht verstehe ist folgender sachverhalt: wie schaffe ich es, dass ich die ursprünglich in die map hineingespeicherten rgb-werte wieder aus ihr heraushole? (und eben nicht nur als hashwert)

ist das verständlich was ich möchte?
 
S

SlaterB

Gast
> ist das verständlich was ich möchte?

für mich genauso wie vorher,
ob mein Verständnis das richtige ist, ist eine andere Frage ;)


------

einfacher wirds, wenn du erstmal dein ganzes Programm vergisst und ein anderes verwendest:

Code:
public class Test {
 
  public static void main(String[] args) {
      MainVector x = ...; // Objekt mit Konstruktor erzeugen, Testwerte 1, 2, 3
     // evtl. weitere Testwerte setzen

     System.out.println("x ist: "+x.toString());
  }
  

}
toString braucht nun gar nix, alle Information die in x drin sind kennt toString, denn toString ist ja ein Teil von x,

du musst nur in toString auf die vorhanden Exemplarvariablen zugreifen und daraus einen String formen
 

Kitkat

Mitglied
ok ich verstehe. hab das ausprobiert. wenn ich quasi das hier mache :

Code:
while (itrMap.hasNext())
		{
			vektorMap = (MainVektor)itrMap.next();
			vektorMap.red = 1;
			vektorMap.green = 2;
			vektorMap.blue = 3;
			System.out.println(" " + vektorMap.toString());
		}



public String toString() 
	{
		String redString = Integer.toString(red);
		String greenString = Integer.toString(green);
		String blueString = Integer.toString(blue);
		String print = (redString + ", " + greenString + ", " + blueString);
		return print;
	}

dann hab ich als ausgabe: 1, 2, 3 (also wären hier red, green, blue, die eigenschaften meine objekts vektorMap

doch wie funktioniert das mit dem iterator: dass ich nun für jedes vektorMap-objekt der map die 3 gespeicherten werte heraushole?
 

Kitkat

Mitglied
ok hab das nun so gelöst:

Code:
while (itrMap.hasNext())
		{
			vektorMap = (MainVektor)itrMap.next();
			
			for(int i=0; i < rgb.length; i++)
			{
				vektorMap.red = vektorMap.getElem(0);
				vektorMap.green = vektorMap.getElem(1);
				vektorMap.blue = vektorMap.getElem(2);
			}
			System.out.println(" " + vektorMap.toString());
		}

doch das bringt mich noch um den verstand (oder ich mich selber denkst du wohl nun ;) )
nun habe ich immer das: 255, 255, 255 obwohl mein bild zweifarbig sein müsste, also ich müsste zur hälfte 0,0,0 und zu anderen hälfte 255,255,255 haben
 

Kitkat

Mitglied
ich zum letzten für heute ;); so müsst es stimmen:

Code:
while (itrMap.hasNext())
		{
			vektorMap = (MainVektor)itrMap.next();
			System.out.println(" " + vektorMap.toString());
		}




public String toString() 
	{
		String print = (MainVektor.red + ", " + MainVektor.blue + ", " + MainVektor.green);
		return print;
	}

oder?
 
S

SlaterB

Gast
die erste toString mit 1,2,3 funktioniert, wieso behälst du die nicht?

kürzer:
Code:
public String toString()
   {
      return red+", "+green+", "+blue;
   }
warum änderst du diese Operation in den folgenden Post?
was macht einen Unterschied, ob ein Objekt für sich alleine steht oder in einer Map?
was macht einen Unterschied, ob du gerade in der Operation farbenAuswerten oder irgendwo sonst bist?

warum sollte

Code:
public String toString()
   {
      return red+", "+green+", "+blue;
   }
nicht mehr funktionieren??
 

Kitkat

Mitglied
guten morgen,

was macht einen Unterschied, ob ein Objekt für sich alleine steht oder in einer Map?
was macht einen Unterschied, ob du gerade in der Operation farbenAuswerten oder irgendwo sonst bist?

ja du hast recht, einen unterschied macht es nicht, ob ein objekt allein steht oder in einer map, oder in welcher methode es gerade steht. also ich komm gedanklich nur nicht ganz klar damit, wie ich nun auf den inhalt des objekts zugreife, also wie ich den auslese in der schleife des iterators.

lg katha
 
S

SlaterB

Gast
ganz normal, es gibt nur einen Weg
Code:
public String toString()
   {
      return red+", "+green+", "+blue;
   } 


while (itrMap.hasNext())
      {
         vektorMap = (MainVektor)itrMap.next();
         System.out.println(" " + vektorMap.toString());
      }
 

Kitkat

Mitglied
hallo,

ich nochmal. ich hatte mich wohl geirrt und den falschen teil der ausgabe betrachtet. es funktioniert noch immer nicht. ich habe mal zusätzlich, um zu überprüfen ob er alle werte ausgibt, den string "name" als zusätzliches attribut für mein MainVektor objekt definiert:

Code:
for(int y=0; y<h; y++)
		{
			for(int x=0; x<w; x++)
	         {
				MainVektor rgbVektor = new MainVektor(w);
				
	            int argb = ((BufferedImage) img).getRGB(x, y);     

	            MainVektor.red   = (argb >> 16) & 0xff;				
	            MainVektor.green = (argb >> 8)  & 0xff;				
	            MainVektor.blue  = (argb)       & 0xff;

	            stringValue = Integer.toString(counter);
	            MainVektor.name = stringValue;
	            
	            map.put(stringValue, rgbVektor);
	            counter++;
	         }
		}

so, nun gebe ich das ja wie gehabt aus, indem ich meine map iteriere:

Code:
Iterator itrMap = map.values().iterator();
		while (itrMap.hasNext())
		{
			vektorMap = (MainVektor)itrMap.next();
			System.out.println(vektorMap.toString());
		}

toString hab ich natürlich geändert:
Code:
	public String toString() 
	{
		return (red + ", " + green + ", " + blue + ", " + name);
	}

so nun hab ich als ausgabe (für ein 1600 pixel umfassendes bild, welches vierfarbig ist):
1600 x "200, 200, 200, 1600"

wo könnte das noch hängen?

lg katha
 
S

SlaterB

Gast
die Variablen sind statisch..

statisch heißt, dass es sie nur einmal pro Klasse, also nur einmal im ganzen Programm gibt,

entferne das Attribut 'static' und schreibe
rgbVektor.red
statt
MainVektor.red

und überlege dir langsam was du fragst, ewig spiele ich solche Spielchen nicht mit,
erst lernen, dann Programme schreiben..

kann natürlich auch jemand anders antworten,
insbesondere in einem neuen Thread stehen die Chancen höher,
hier schaut wohl kaum noch jemand rein
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Prob. mit einer Fehlermeldung Java Basics - Anfänger-Themen 7
S prob mit add in einer arry list Java Basics - Anfänger-Themen 13
F Erste Schritte Hausaufgaben-Prob. - Iterative Prog. Zahlen aufsummieren, wenn durch k>0 teilbar. Java Basics - Anfänger-Themen 5
H Kleines Prob Java Basics - Anfänger-Themen 5
K Erste Schritte prob mit DefaultListModel (string) Java Basics - Anfänger-Themen 8
K Erste Schritte prob anzeige Java Basics - Anfänger-Themen 4
F Button array prob Java Basics - Anfänger-Themen 7
S OOP ArrayList Klasse nachbauen, prob mit remove Java Basics - Anfänger-Themen 5
G Prob. mit KeyListener und Unterklasse Java Basics - Anfänger-Themen 5
J Doppelte Integer aus einem Array entfernen - seltsames Prob. Java Basics - Anfänger-Themen 5
G hibernate . tutorial prob . Java Basics - Anfänger-Themen 4
G taschrechner prob Java Basics - Anfänger-Themen 2
A Connection Prob Java Basics - Anfänger-Themen 3
F prob beim positionieren eines banners Java Basics - Anfänger-Themen 4
N Array-Prob Java Basics - Anfänger-Themen 6
K Prob mit java.util.regex.matches-String wird nicht erkannt? Java Basics - Anfänger-Themen 9
G Erklärungs Prob Java Basics - Anfänger-Themen 15
T Quersummen Prob. Java Basics - Anfänger-Themen 4
javafreak1986 Util.class Prob Java Basics - Anfänger-Themen 8
L RandomAccessFile - Prob Java Basics - Anfänger-Themen 4
G nen virus oder nen prob mit java Java Basics - Anfänger-Themen 3
M Prob bei JTextArea auf .setEditable(false) setzen Java Basics - Anfänger-Themen 2
G mal wieder Prob mit Jar-File Java Basics - Anfänger-Themen 16
T Prob. Interface und Paramter Java Basics - Anfänger-Themen 5
E 2 Prob.:"ArrayIndexOutOfBoundsException" & do- Java Basics - Anfänger-Themen 2
Z prob beim erstellen eines jar files mit eclipse Java Basics - Anfänger-Themen 4
G kleines Prob bei "net send" programm Java Basics - Anfänger-Themen 2
C Methoden Ausgabe aller Attribute einer Instanz ohne einzelne Methode Java Basics - Anfänger-Themen 3
krgewb remove beim Iterieren einer HashMap Java Basics - Anfänger-Themen 3
D wie kann ich gcc aus einer .java datei heraus aufrufen? Java Basics - Anfänger-Themen 2
F http post einer Webseite nachahmen Java Basics - Anfänger-Themen 3
C Abbruch einer Schleife mit break, meine Übung funktioniert nicht richtig Java Basics - Anfänger-Themen 4
G JTable bei aktivieren einer Zelle soll Text selektiert werden. Java Basics - Anfänger-Themen 24
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
D 2 ArrayListen gleich sortieren bzw. eine Liste anhand einer anderen Sortieren Java Basics - Anfänger-Themen 6
ixChronos Letzten 4 Ziffern einer großen Zahl ausgeben Java Basics - Anfänger-Themen 3
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
L Variablenwerte aus einer Methode übergeben Java Basics - Anfänger-Themen 2
E Arrays in einer ArrayList miteinander vergleichen Java Basics - Anfänger-Themen 12
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
Shadowrunner Variablen Gibt es eine Möglichkeit die Ziffern/Stellen einer Zahl fest zu legen? Java Basics - Anfänger-Themen 3
D remove Object von einer Liste von Obejcts Java Basics - Anfänger-Themen 3
FunkyPhil94 Wert in einer Lambda Funktion erhöhen Java Basics - Anfänger-Themen 3
T Aufruf der Methode einer Oberklasse, wenn sie in der Unterklasse überschrieben ist. Polymorphie. Java Basics - Anfänger-Themen 2
B Kommunikation mit Seriellen Schnittstellen + Integration einer lib Java Basics - Anfänger-Themen 1
A Daten aus einer HashMap aus einer DB speichern und mit neuen Werten vergleichen Java Basics - Anfänger-Themen 8
P Welches SDK für das erstellen einer ausführbaren Datei? Java Basics - Anfänger-Themen 4
D Länge einer Liste aufrufen. Java Basics - Anfänger-Themen 19
J Klassen Instanzen einer Klasse in einer anderen unabhängigen Klasse nutzen Java Basics - Anfänger-Themen 4
B Alle Strings bis zu einer Maimallänge aufzählen, die Bedingung erfüllen Java Basics - Anfänger-Themen 13
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
Soranix Erste Schritte Struktur als Anfänger // Von einer Klasse auf ein Objekt einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 6
MoxMorris Wie macht man String[] = String[] aus einer anderer Methode? Java Basics - Anfänger-Themen 18
T Fibonacci mit einer Hilfsmethode berechnen Java Basics - Anfänger-Themen 10
S Hilfe zu einer Aufgabe Java Basics - Anfänger-Themen 5
M Radius von einer ellipse bestimmen Java Basics - Anfänger-Themen 7
Say Fehlenden Code finden in einer while-Schleife? Java Basics - Anfänger-Themen 11
M Zufallszahl generieren mit einer linken und rechten Grenze Java Basics - Anfänger-Themen 3
N Was Passiert mit dem Namen einer Variable, wenn man diese einer Liste Hinzufügt Java Basics - Anfänger-Themen 16
G Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
W String einer Textdatei in einzelne Stringobjekte pro Zeile aufteilen Java Basics - Anfänger-Themen 14
W Objekte einer ArrayList in txt-datei schreiben mit Paths? Java Basics - Anfänger-Themen 2
S Best Practice Fragen zu Projektstruktur einer Datenbank-Abfrage-App (MVC) Java Basics - Anfänger-Themen 13
T Variable von Objekten in einer Methode überprüfen Java Basics - Anfänger-Themen 26
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
S Textausgabe in einer For-Schleife Java Basics - Anfänger-Themen 12
M Spezifischen Wert einer Zeile aus .txt Datei entnehmen Java Basics - Anfänger-Themen 15
B Popups mit Klicksabfangen zumAusfüllen einer .ods Datei Java Basics - Anfänger-Themen 0
M RandomAccessFile int und String gleichzeitig in einer Datei Java Basics - Anfänger-Themen 49
E Suchfunktion in einer Liste Java Basics - Anfänger-Themen 39
T ungeordnete Werte-Paare in einer Liste Java Basics - Anfänger-Themen 7
FireHorses Einen Command erst nach einer Chateingabe aktivieren Java Basics - Anfänger-Themen 1
frager2345 Singleton-Muster Java ->Nur eine Instanz einer Klasse erzeugen können Java Basics - Anfänger-Themen 45
F wie kann ich die Position des letzten Vokals innerhalb einer Zeichenkette ermitteln? Java Basics - Anfänger-Themen 5
H Kapselung protected aber in einer Kindklasse nicht zugänglich Java Basics - Anfänger-Themen 5
R Methoden Werte einer ArrayList als Parameter übergeben. Java Basics - Anfänger-Themen 4
B Den Dateipfad einer Java Datei durch Code in Selbiger finden? Java Basics - Anfänger-Themen 10
LilliCherry Array in einer Zeile ausgeben Java Basics - Anfänger-Themen 6
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
L Dauerhaftes Speichern einer Eingabe bei einer ArrayList Java Basics - Anfänger-Themen 26
V Hilfe bei Implementierung einer boolean Methode Java Basics - Anfänger-Themen 6
G Position einer unbekannten 3-stelligen-Zahl in einem String finden Java Basics - Anfänger-Themen 15
stormyark Fehler beim überschreiben einer Variable Java Basics - Anfänger-Themen 1
H Kompliziertes Sortieren einer ArrayList mit Objekten(Sortieren nach X und Y) Java Basics - Anfänger-Themen 11
T Permanentes speichern von Objekten in einer ArrayList Java Basics - Anfänger-Themen 6
Saiko Zeilen einer Datei einlesen Java Basics - Anfänger-Themen 3
H Erste Schritte Nach einer Zahl n soll n Mal der String untereinander ausgegeben werden Java Basics - Anfänger-Themen 3
G zwei Instanzen einer Klasse Java Basics - Anfänger-Themen 29
sserio Prüfziffer einer ISBN Nummer herrausfinden. Java Basics - Anfänger-Themen 14
J Benennung einer mir unbekannten Java - Ausdrucksweise Java Basics - Anfänger-Themen 5
LFB In einer For-Schleife alles in einer Zeile ausgeben Java Basics - Anfänger-Themen 14
sserio Wie kann man nach einer Klasse fragen? Java Basics - Anfänger-Themen 12
berserkerdq2 Wann soll ich den Stream schließen, wenn ich das in einer Methode habe? Java Basics - Anfänger-Themen 8
berserkerdq2 Wie gebe ich den Pfad zu einer Datei an, die in einem Ordner in Eclipse ist? Java Basics - Anfänger-Themen 1
M Variable in einer Schleife initialisieren Java Basics - Anfänger-Themen 46
D EinMalEins mithilfe einer for-Schleife und Array Java Basics - Anfänger-Themen 1
J int innerhalb einer Datei ändern Java Basics - Anfänger-Themen 1
D Hilfe bei einer Aufgabe mit for-Schleife Java Basics - Anfänger-Themen 6
Neuling47 Ich zerbreche mit den kopf an einer Aufgabe Java Basics - Anfänger-Themen 61
H Mit setter-Methode JLabel in einer andern Klasse ändern. Java Basics - Anfänger-Themen 40

Ähnliche Java Themen

Neue Themen


Oben