Erste Schritte HashMap Kurze Frage - Werte über Schleife ausgeben

sewagii

Mitglied
Hi,

ich hab hier eine Schleife die nicht gehen will:

Java:
for(int i; i <= HashMap.size(); i++)
{
CODE FÜR AUSGABE
}

In der HashMap sich Werte und die size wird auch angezeigt. Aber warum immer eine Fehlermeldung kommt ist mir unklar.


mfg
 

sewagii

Mitglied
Ein Lehrbuch hab ich leider noch nicht.

Danke :-\
Man bin ich dumm, ich hatte erst i = 0. Dann kam eine andere Fehlermeldung und ich hab alles wieder umgeschrieben und dabei i = 0 entfernt.
Jetzt weiß ich auch was die Fehlermeldung sollte, und ich dachte BlueJ wäre dumm.

Edit: Genau jetzt bin ich wieder bei der Fehlermeldung "inkompatible Typen"
Also ist ist vom Typ int und size() laut Dokumentation mehr oder weniger auch.

mfg
 
G

Gast2

Gast
Wenn du was an deinem Code geändert hast (im Bezug auf deinen ersten Post) und du jetzt andere Fehlermeldungen kassierst, dann poste nochmal deinen aktuellen Code und sag in welcher Zeile der Fehler auftritt.
 

sewagii

Mitglied
Java:
HashMap <String, String> HashMapA = new HashMap<String, String>();


public Klasse()
     HashMapA.put("Friedrich", "45678");
     HashMapA.put("Albert", "56789");
  }
  
  public void printAllKunden()
  {
    
     for (int i = 0; i = HashMapA.size(); i++)
        {
            System.out.print("....");
        }
    }


HashMapA.size() wird bei der Fehlermeldung rot markiert
 
G

Gast2

Gast
bei der for schleife gibst du als zweites die Bedingung ab wielang die for schleife laufen soll. da muss also ein boolean stehen, du hast da aber ne zuweisung stehen.
 
E

emailundlos

Gast
Also das passt schon. size() ist ja dynamisch, das heißt eine Liste mit nicht fester Listenlänge, kann also länger werden.

Du darfst das nicht so streng sehen. also so ungefair. Das ist das Problem. Und dumm ist hier schon mal keiner.
 
A

Andgalf

Gast
über eine Hashmap würde ich nicht mit einem zähler iterieren sondern
Java:
		HashMap<String, String> hashMapA = new HashMap<String, String>();

		hashMapA.put("Friedrich", "45678");
		hashMapA.put("Albert", "56789");
		
		for (Entry<String, String> entry : hashMapA.entrySet()) {
			System.out.println(entry.getKey());
			System.out.println(entry.getValue());
		}

und Variablennamen schreibt man klein (hashMapA) .... am besten gleich angewöhnen
 
Zuletzt bearbeitet von einem Moderator:

sewagii

Mitglied
OK, der Code ging plötzlich:

Java:
for(...;i < HashMapA.size();...){...


Aber der Unterschied zwischen < und <= ist mir aber nicht klar bzw. warum ich nicht = verwenden kann. Das Erste i ist doch quasi der Start und das andere i das Ende?
 
A

Andgalf

Gast
also Du solltest dich auf jeden Fall mal mit den Java Grundlagen beschäftigen ... Buchempfehlungen gibt es hier im Forum genug.

1. in java ist das = kein Vergleich sondern eine Zuweisung, Vergleiche gehen mit ==

Java:
for (int zaehler = 0; zaehler < hashMapa.size(); zaehler++) {
			
		}

int zaehler=0 --> initialisiert den zaehler

zaehler < hashMapA.size() --> heißt laufe solange der zaehler echt kleiner hashMapA.size() ist

zaehler ++ --> erhöht den zähler in jedem Schleifendurchlauf um 1

[EDIT] und mit einem Zähler über eine Map zu iterieren macht nicht viel Sinn siehe meinen vorigen Post ... mit nem Zähler eher über ein Array etc
vergiss den Hinweiß mit dem Buch ... hatte das hier:
Ein Lehrbuch hab ich leider noch nicht.
nicht gelesen .... sorry
[/EDIT]
 
Zuletzt bearbeitet von einem Moderator:

discipulo

Mitglied
Java:
      private JLabel [] jl = new JLabel[7];
               for(int i=0;i<jl.length;i++){
			jl[i]= new JLabel("TestLabel"+i);
			...
		}
Zum erläutern:
In der for-Schleife steht i<jl.length wobei ich auch i<7 schreiben könnte,
dabei muss man bedenken, dass das Array zwar 7 Feldelemte hat, aber die Indexe 0,1,2,3,4,5,6 sind.
Deshalb geht die for-Schleife auch nur bis i<7 also 6.
Würde man i<=7 würde dein Array dir ein OutOfBounds exception ausgeben. Weil jl[7] nicht exsistiert.
Ähnlich wird es sich bei deiner HashMap auch verhalten.

Schnell zusammen gefasst
i<7 -> i kleiner 7
i<= -> i kleiner oder gleich 7
 
E

emailundlos

Gast
Das lief ja super...

Wenn in der HashMap n Element sind und die Zählervariable bei 0 anfängt und Schleife vor dem ersten Schleifendurchlauf die Variable nicht inkrementiert, dann muss es danach (nur) noch n-1 Durchläufe geben. Beim n-1. Durchlauf wird dann i noch einmal inkrementiert, wonach < nicht mehr gilt und die Schleife dann verlassen wird.
 
Zuletzt bearbeitet von einem Moderator:
E

emailundlos

Gast
Ein Beispiel: Sei n=3.

1. i=0. -> Schleife wird durchlaufen.
2. i=1. -> Schleife wird durchlaufen.
3. i=2. -> Schleife wird durchlaufen.
4. i=3. -> Schleife wird nicht durchlaufen.
 
E

emailundlos

Gast
Java:
for (int i = 0; i < 15; i++) {
  System.out.println(i + 1 + ". durchlauf, i=" + i + ".");
}
 
Zuletzt bearbeitet von einem Moderator:
G

Gast2

Gast
Es gibt auch einen EDIT Button :rtfm:

So schaut der aus:
edit.gif
 
E

emailundlos

Gast
Ja, Entschuldigung, dann fass die ganzen Beiträge zusammen. @Mods: Wenn es geht, bitte die drei Beiträge mit den Beispielen in einem Beitrag zusammenfassen oder die Beispiele wieder verschieben.
 
Zuletzt bearbeitet von einem Moderator:
G

Gast2

Gast
Ich wollt dich nur drauf aufmerksam machen, dass ein Dreifachpost nicht unbedingt sein muss. Wenn du noch was zu deinem Posting hinzufügen willst dann editiere deinen letzten Post, dafür ist der "Ändern" Button nun mal da.
 

sewagii

Mitglied
OK Danke für die Hilfe :)

Jetzt häng ich aber am nächsten Schritt fest
Aufgabe: "Außerdem soll die Klasse eine Methode printAllPersonen enthalten, in der über eine der beiden Maps iteriert wird und jeweils mit Hilfe von System.out.println(…) die String-Repräsentation einer Person ausgegeben wird."


Java:
hashMapA.put("Friedrich", "45678");
hashMapA.put("Albert", "56789");

Ich hätte jetzt ja einfach:
System.out.println(hashMapA) gemacht und die ganze Map wird ausgegeben :-\


Mit System.out.println(mapSucheUeberNummer.get("Friedrich")); wird nur "45678" ausgegeben.
Jetzt soll ich den Key + den Wert in eine Zeichenkette packen und diese dann für jeden Eintrag ausgeben.

Im Grunde was so was ähnliches Andgalf schon geschrieben hat:
Java:
System.out.println(......getKey());
System.out.println(.....getValue());

Bei einer ArrayList ist der Schlüssel ja die Nummer des Feldes, aber bei meiner HashMap ist es der Name.
Jetzt muss ich irgendwie sagen: gebe den Schlüssel und den Wert vom ersten Wertepaar aus.
Da der Schlüssel aber der Name und keine Zahl ist, ist dies doch gar nicht möglich?
ich hab schon die Dokumentation durchgeschaut aber keinen passenden Befehl gefunden oder hab ich die Aufgabe falsch verstanden?

Java:
 public void printAllPersonen()
{
for (int i = 0; i < hashMapA.size(); i++)
        {

                 
        }
}
 

sewagii

Mitglied
Ok das Problem von oben konnte ich lösen. Die Ausgabe klappt jetzt.

Aber ich hab an anderer Stelle eine Fehlermeldung die ich nicht verstehe:
Java:
HashMap <Integer, String> mapSucheUeberNummer = new HashMap<Integer, String>();
mapSucheUeberNummer.put(12345, "Horst");
     mapSucheUeberNummer.put(23456, "Adolf");
     mapSucheUeberNummer.put(34567, "Wilhelm");
     mapSucheUeberNummer.put(45678, "Terence");
     mapSucheUeberNummer.put(56789, "Albert");



public String getStudentByRegistrationNumber(int nummer)
{
 Set setOfKeys = mapSucheUeberNummer.keySet();
    Iterator iterator = setOfKeys.iterator();
      
      while(iterator.hasNext())
      {
          int integerNummer = (int) iterator.next();
        
         if (integerNummer = nummer) >>>>Hier sind die Datentypen nicht kompatibel
            {
            String stringName = (String)mapSucheUeberNummer.get(integerNummer);
           }
          System.out.println(toString(integerNummer, stringName));
        }
        return "www";
 

turtle

Top Contributor
Spricht irgendetwas dagegen, alles typsicher mit Generics zu machen?

Wenn ich das richtig verstanden habe:
Java:
		Map<Integer, String> meineMap = new HashMap<>();
		Set<Integer> keySet = meineMap.keySet();
		Collection<String> values = meineMap.values();
 

sewagii

Mitglied
Ach mit = weist man in Java immer meinen Wert zu und == ist immer ein Vergleich, gut das merkt ich mir ab jetzt :)

"Spricht irgendetwas dagegen, alles typsicher mit Generics zu machen?"
Was heißt das genau? xD
 

turtle

Top Contributor
"Spricht irgendetwas dagegen, alles typsicher mit Generics zu machen?"
Was heißt das genau? xD
na, solche Zeilen wie
int integerNummer = (Integer) iterator.next();
kann man wohl doch nicht wirklich schön finden, oder?

Woher nimmst Du denn die Gewissheit, das da IMMER ein Integer über den Iterator zurückkommt. da wird wohl auch Deine IDE, z.B. Eclipse, gewarnt haben, dass man das sich noch mal anschauen sollte, oder?
Wenn ich das richtig erkenne, sollte da besser stehen:
Java:
		Map<Integer, String> mapSucheUeberNummer = new HashMap<>();
		 Set<Integer> setOfKeys = mapSucheUeberNummer.keySet();
		    Iterator<Integer> iterator = setOfKeys.iterator();
Und genau dafür wurden Generics in Java eingeführt.
 

sewagii

Mitglied
Ah Ok :)
Ich muss leider "BlueJ" verwenden, da wird nix angezeigt.

"Ergänzen Sie Ihre Klasse um die Methoden getStudentByRegistrationNumber(int nr) sowie getStudentByName(String n), die in der passenden Map nach dem gewünschten Studenten suchen und das entsprechende Student-Objekt zurückgeben. Falls der gesuchte Student in der betreffenden Map nicht vorhanden ist, wird eine Fehlermeldung auf der Konsole ausgegeben und null zurückgeliefert."


Soweit klappt ja alles.
Ich hatte jetzt vor:

Wenn Name gefunden:
return "den Namen u.s.w."
ansonsten:
return "null" (Warum gerade Null bei einem String)?

Jetzt ist es aber eine Schleife welche die Werte sucht
Und deswegen wird ja (wenn ich nicht gerade den letzten in der Liste erwische immer null zurückgegeben.

Meine Ideen wären jetzt:
Entweder die Schleife beim Fund verlassen oder eine weitere Variable einbauen, die beim Fund auf einen Wert gesetzt wird und verhindert dass die Befehle in else dann ausgeführt werden Fund ausgeführt werden.
Ich würde das Verlassen der Schleife vorziehen, dann müsste ich den Iterator beim Fund irgendwie auf einen Wert setzen damit er die Schleife beim nächsten Versuch nicht mehr ausführt.

Im iterator sind ja die Schlüssel wenn ich das richtig verstehe bzw. er nimmt sich bei jedem Durchlauf immer den nächsten Schlüssel?
Also müsste ich den Iterator auf den letzten Schlüssel setzen?
 
E

emailundlos

Gast
Das alles ist nur schwer zu verstehen. Man sollte sowohl alle vorderen wie auch alle hinteren Elemente betrachten. Elemente ist hier vielleicht das falsche Wort. Sehen wir uns den Aufbau einer HashMap an. Es gibt keys (Schlüssel, eindeutig) und values (Werte, dürfen mehrfach vorkommen). Matrikelnummern unterscheiden sich also alle voneinander, sonst würde es nicht funktionieren. Statt nur Strings zu verwenden, sollte man lieber Ganzzahldatentyp wählen, denn dabei gibt es beim Parsen der Benutzereingabe weniger Fehler. Wenn eine Matrikelnummer (key) gefunden wurde, kann der entsprechende Name (value) dem Benutzer dargestellt werden. Schleifen terminieren steht überall im Netz. Z.B.: Variable einführen und immer prüfen, mit return sofort die Methode verlassen, die eigentlich schon vorhanden Zählervariabel ändern, damit diese nach der nächsten Prüfung zum Verlassen der Methode führt - oder eine Ausnahme (Exception) erstellen oder eine bereits generierte weitergeben.
 
E

emailundlos

Gast
Die Schildkröte hat mich abgelenkt und ich habe was vergessen: mit break oder mit continue kann ebenfalls eine Schleife verlassen werden. Wenn ich allerdings irgendwo 'ne Methode sehe, die mit einem stattdessen auch möglichen return mit einem break verlassen wurde,... wie auch immer. Häufig ist es überflüssig.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S HashMap mehrere Keys zu einem Value Java Basics - Anfänger-Themen 3
A Daten aus einer HashMap aus einer DB speichern und mit neuen Werten vergleichen Java Basics - Anfänger-Themen 8
T HashMap Lsite gibt die sachen nicht aus wie gewollt. Java Basics - Anfänger-Themen 3
krgewb HashMap Java Basics - Anfänger-Themen 2
B Hashmap richtig bauen, die Tripel auf Zahl abbildet? Java Basics - Anfänger-Themen 10
"java.util.HashMap.get(Object)" is null Java Basics - Anfänger-Themen 10
berserkerdq2 Hashmap, wie prüfe ich ob ein Key schon existiert Java Basics - Anfänger-Themen 19
S Durch HashMap iterieren Java Basics - Anfänger-Themen 8
rafi072001 Sortieren einer HashMap nach Values Java Basics - Anfänger-Themen 2
F gson mit einer Hashmap Java Basics - Anfänger-Themen 2
J JSON-HashMap Java Basics - Anfänger-Themen 3
J Hashmap Java Basics - Anfänger-Themen 13
C Hashmap zickt Java Basics - Anfänger-Themen 9
S HashMap contains() Methode Java Basics - Anfänger-Themen 1
Z Satz aufteilen und die Wörter zählen (HashMap) Java Basics - Anfänger-Themen 15
N enum Attribut von Objekten einer Hashmap ausgeben Java Basics - Anfänger-Themen 6
P Verschachtelte Hashmap Java Basics - Anfänger-Themen 6
I Sortiert eine HashMap nicht gleich wie eine ArrayList? Java Basics - Anfänger-Themen 1
B HashMap alphabetisch sortieren Java Basics - Anfänger-Themen 2
J HashMap Java Basics - Anfänger-Themen 6
M Enum-Variable HashMap zuweisen Java Basics - Anfänger-Themen 5
U Hashmap Iterator selbst implementieren Java Basics - Anfänger-Themen 10
N HashMap in List good practice? Java Basics - Anfänger-Themen 2
K Value eines HashMaps in einer HashMap wiedergeben. Java Basics - Anfänger-Themen 5
O Hashmap, ArrayList, LinkedList Java Basics - Anfänger-Themen 7
O HashMap - ArrayList Java Basics - Anfänger-Themen 29
J Hashmap langsamer als compareTo? Java Basics - Anfänger-Themen 23
E HashMap+Vererbung Java Basics - Anfänger-Themen 11
J Erhöhen eines Values als Integer bei gleichen Keys in HashMap Java Basics - Anfänger-Themen 12
N Methoden HashMap interne Werte miteinander vergleichen Java Basics - Anfänger-Themen 7
W The type Long is not visible HashMap Java Basics - Anfänger-Themen 4
M Objekt mit Hashmap vergleichen Java Basics - Anfänger-Themen 22
S Gibt es für die Klasse HashMap Generic Implementierungen? Java Basics - Anfänger-Themen 11
C HashMap - alle keys haben values der letzten put-Anweisung Java Basics - Anfänger-Themen 3
J Hashmap auslesen Java Basics - Anfänger-Themen 7
F HashMap sortieren <String, Long> Java Basics - Anfänger-Themen 3
GreenTeaYT HashMap dupliziert meine Elemente? Java Basics - Anfänger-Themen 2
shiroX Methoden Morse-Code Übersetzer mit HashMap Java Basics - Anfänger-Themen 5
E HashMap Problem Java Basics - Anfänger-Themen 5
P Hashmap anstatt LinkedList? Java Basics - Anfänger-Themen 6
T HashMap und die Methoden Java Basics - Anfänger-Themen 13
N Methoden Interaktives PDF mit HashMap befüllen Java Basics - Anfänger-Themen 0
Z Hashmap auseinandernehmen und analysieren Java Basics - Anfänger-Themen 7
B Durchlaufen von Hashmap und Arraylist Java Basics - Anfänger-Themen 8
F HashMap oder welches Array? Java Basics - Anfänger-Themen 4
T HashMap Java Basics - Anfänger-Themen 24
L Hashmap mit variablem Key Java Basics - Anfänger-Themen 9
M Collections Probleme mit Hashmap Java Basics - Anfänger-Themen 4
N Collections String in HashMap umwandeln Java Basics - Anfänger-Themen 3
Z HashMap richtig benutzen Java Basics - Anfänger-Themen 2
lgund HashMap // TS3 Query Java Basics - Anfänger-Themen 7
Z Hashmap Iterator löscht nicht Java Basics - Anfänger-Themen 8
E Hashmap Wert auslesen Java Basics - Anfänger-Themen 2
S Printstream für einen Hashmap Loop Java Basics - Anfänger-Themen 1
dat_vin OOP Hashmap und Attribute Java Basics - Anfänger-Themen 7
C Check ob eine HashMap schon existiert Java Basics - Anfänger-Themen 16
P Vererbung Eigene HashMap Variante Java Basics - Anfänger-Themen 2
R Hashmap in anderer Klasse nicht benutzbar Java Basics - Anfänger-Themen 1
T Java Hashmap Java Basics - Anfänger-Themen 3
L Gibt es etwas wie "HashMap <String, String, String> Java Basics - Anfänger-Themen 9
K HashMap mit Daten aus ArrayList befüllen Java Basics - Anfänger-Themen 14
S OOP Klasse mit static-Eigenschaften - HashMap füllen Java Basics - Anfänger-Themen 6
O HashMap Fragen Java Basics - Anfänger-Themen 8
T HashMap Werte einfügen, durchsuchen und auslesen Java Basics - Anfänger-Themen 17
M Semantisches Problem HashMap/Netzwerk Java Basics - Anfänger-Themen 4
D HashMap Keys durchlaufen Java Basics - Anfänger-Themen 2
B Zugriff auf csv-Datei per hashmap Java Basics - Anfänger-Themen 5
M HashMap keys ausgeben Java Basics - Anfänger-Themen 2
S In einer Hashmap Klassen regestrieren Java Basics - Anfänger-Themen 2
H Collections Was ist schneller - HashMap + Sort v TreeMap? Java Basics - Anfänger-Themen 75
F HashMap nach kleinstem Value durchsuchen Java Basics - Anfänger-Themen 11
G HashMap Java Basics - Anfänger-Themen 6
F Wortpaare - HashMap - ArrayList Java Basics - Anfänger-Themen 6
M HashMap Frage Java Basics - Anfänger-Themen 3
M HashMap - put() reagiert nicht? Java Basics - Anfänger-Themen 8
N Cast eines Objektes in eine Hashmap Java Basics - Anfänger-Themen 13
A CSV Zeilenweise einlesen und in einer HashMap speichern Java Basics - Anfänger-Themen 12
A Input/Output Hashmap in einem JPanel via JList anzeigen Java Basics - Anfänger-Themen 8
K HashMap auf leere Key-Value-Paare prüfen Java Basics - Anfänger-Themen 14
F Hilfe bei der HashMap. Java Basics - Anfänger-Themen 3
F HashMap vs. TreeMap Java Basics - Anfänger-Themen 5
B HashMap Java Basics - Anfänger-Themen 9
C Collections String[] als value in HashMap Java Basics - Anfänger-Themen 6
V Hashmap Iterieren Java Basics - Anfänger-Themen 4
C Csv File in Hashmap ausgeben Java Basics - Anfänger-Themen 14
T HashMap<String,Object> Werte auslesen Java Basics - Anfänger-Themen 5
I HashMap sortieren Java Basics - Anfänger-Themen 10
I HashMap Java Basics - Anfänger-Themen 11
H Collections Brauche modifizierte HashMap Java Basics - Anfänger-Themen 6
H TreeMap/HashMap synchronisieren Java Basics - Anfänger-Themen 2
A Datentypen Hashmap to Array Java Basics - Anfänger-Themen 11
D HashMap überschreibt Werte Java Basics - Anfänger-Themen 7
pg1337 Interface Comparable-Interface bei HashMap Java Basics - Anfänger-Themen 21
D erweiterte hashmap Java Basics - Anfänger-Themen 5
H HashMap<Int, String> - Er findet die Int-Klasse nicht. Java Basics - Anfänger-Themen 3
L HashMap zu JList Java Basics - Anfänger-Themen 6
F Collections ArrayList oder Hashmap mittel Collections.sychronised Java Basics - Anfänger-Themen 6
B Klassen HashMap Zwei Objekte, gleicher Key Java Basics - Anfänger-Themen 4
N HashMap fehlerhafte Rückgabe Java Basics - Anfänger-Themen 7
K Durch eine HashMap wandern? Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben