2017-07-25 1 views
0

Durch Aufrufen einer Methode werden bei meinem Fall countInNumbers Ergebnisse als Array zurückgegeben.So erhalten und vergleichen Sie die Wertergebnisse einer Zuordnung <Ganzzahl, Ganzzahl>

System.out.println(countIntInNumbers(Array)); 

Ergebnis:

{1=17, 2=10, 3=16, 4=17, 5=13, 6=22, 7=10, 8=15, 9=16, 10=19, 11=11, 12=15, 13=16, 14=13, 15=19, 16=17, 17=13, 18=21, 19=19, 20=15,} 

Ich versuche, die Zahlen auf anderen Tisch zu trennen ihren Gesamtwert abhängig. Beispiel ... Ich möchte die Zahlen anzeigen, deren Gesamtwert zwischen 3 und 4 liegt, um die Tabelle zu trennen, als die anderen Zahlen.

Mit Blick auf dieses Problem verursachen die Ergebnisse, wie Sie vielleicht feststellen, sind Map, da ich neu in Java bin und ich bin so verwirrt an dieser Stelle.

Jeder kann vorschlagen von etwas zu Beginn?

Aktualisiert ::: countIntInNumbers Methode als

public static Map<Integer, Integer> countIntInNumbers(int[][] mat) { 
    Map<Integer, Integer> intOccurences = new HashMap<>(); 
    for (int[] row : mat) { 
     for (int intInRow : row) { 
      Integer occurences = intOccurences.get(intInRow); 
      if (occurences == null) { // first occurrence 
       intOccurences.put(intInRow, 1); 
      } else { // increment 
       intOccurences.put(intInRow, occurences.intValue() + 1); 
      } 

     } 

    } 
    return intOccurences; 
+0

können zeigen Sie den Code für 'countIntInNumbers'? –

+1

* Ich möchte alle Zahlen drucken, deren Gesamtwert zwischen 3 und 4 * liegt. Eine einzelne Nummer darf keine andere Summe als sie selbst haben. Was versuchst du zu sagen? Was wäre die erwartete Ausgabe im obigen Beispiel? * Ich bin so verwirrt an dieser Stelle. * So bin ich. – shmosel

+0

Beitrag aktualisiert mit der Methode; s Code – Annu

Antwort

0

Ich versuche die Nummern auf verschiedenen Tabellen abhängig von ihrem Gesamtwert zu trennen. Beispiel ... Ich möchte alle Zahlen drucken, deren Gesamtwert zwischen 3 und 4 liegt, um die Tabelle zu trennen, als die anderen Zahlen.

Wir sind nicht sicher, was Sie hier fragen, aber wenn Sie meinen, dass Sie die Zahlen angezeigt werden sollen, die insgesamt zwischen 2 Zahlen haben, dann könnte man so etwas tun:

private void printNumbers(Map<Integer, Integer> intOccurences, int minTotal, int maxTotal){ 
    boolean first = false; 
    System.out.print("{"); 
    for (Map.Entry<Integer, Integer> entry : intOccurences.entrySet()) { 
     int total = entry.getValue(); 
     if (total >= minTotal && total <= maxTotal) { 
      if (first) { 
       first = false; 
      } else { 
       System.out.print(", "); 
      } 
      System.out.print(entry.getKey() + "=" + total); 
     } 
    } 
    System.out.print("}"); 
} 

Wenn Sie wobei etwa Kopieren die Werte auf eine neue Karte dann vielleicht wie etwas:

private Map<Integer, Integer> extractNumbers(Map<Integer, Integer> intOccurences, 
     int minTotal, int maxTotal) { 
    Map<Integer, Integer> result = new HashMap<>(); 
    for (Map.Entry<Integer, Integer> entry : intOccurences.entrySet()) { 
     int total = entry.getValue(); 
     if (total >= minTotal && total <= maxTotal) { 
      result.put(entry.getKey(), total); 
     } 
    } 
    // not sure if you want to remove the ones from the original map 
    return result; 
} 
+0

Genau das hast du erwähnt "Wir sind nicht sicher, was du hier fragst, aber wenn du meinst, dass du die Zahlen anzeigen willst, die eine haben insgesamt zwischen 2 Zahlen, dann könnten Sie etwas tun wie: " Können Sie mir jetzt erklären, wie Sie die Ergebnisse der ersten Methode in die, die Sie gerade erstellt haben, um zu arbeiten? – Annu

+0

Was ist die "erste Methode"? Du meinst "countIntInNumbers (...)". Sie müssen dies zuerst tun und dann, wenn Sie die Summen haben, können Sie die Druck- oder Extraktionsmethoden aufrufen. – Gray

0

folgt Wenn Sie den Wert einer Karte vergleichen wollen es nur durch Schlüssel. Da die Werte der Map Wrapper Integer sind, können Sie mit ==,> =, < = vergleichen, da die Integer equals() -Methode einfach den int-Wert vergleicht, den sie mit dem int-Wert des anderen Integer umschließt. Im Beispiel:

// Adding some test values to the map 
Map<Integer, Integer> map = new HashMap<>(); 
map.put(1, 5); 
map.put(2, 6); 
map.put(3, 5); 

// Get values by key map.get(key) 
// Compare values map.get(key) == map.get(key) or use >=, <= 
System.out.println(map.get(1) <= map.get(2)); // true 
System.out.println(map.get(1) == map.get(3)); // true 
System.out.println(map.get(1) >= map.get(2)); // false 

In Ihrem countIntInNumbers es scheint Sie die Karte nur zurückkehren und den Druck von seiner toString() Methode verwendet wird. Wenn ich dich richtig verstanden habe, möchtest du die Tasten drucken, deren Werte zwischen 3 und 4 liegen. In diesem Fall sind die Werte Integer, so dass es außer den ganzen Zahlen keinen Wert zwischen 3 und 4 gibt.

Nachdem Sie Ihren Schnitt angezeigt haben, konvertieren Sie Ihre Rohmatrix in eine Karte und suchen Sie dann nach den Werten, die Sie benötigen, und fügen Sie sie in eine neue Karte ein. Etwas wie folgt aus:

public static Map<Integer, Integer> countIntInNumbers(int[][] mat) { 
    Map<Integer, Integer> matConvertedToMap = new HashMap<>(); 

    for(int i=0; i<mat.length; i++) 
    { 
     matConvertedToMap.put(mat[i][0], mat[i][1]); 
    } 

    Map<Integer, Integer> intOccurences = new HashMap<>(); 

    for (Map.Entry<Integer, Integer> entry : matConvertedToMap.entrySet()) 
    { 
     if(entry.getValue() == 3 || entry.getValue() == 4) 
     { 
      intOccurences.put(entry.getKey(), entry.getValue()); 
     } 
    } 

    return intOccurences; 
} 

nicht sicher, was der Vergleich wirklich ist und was Sie zurückkommen erwartet, aber das sollte man ein allgemeines Gefühl geben, wie sich durch die Karte iterieren.

+0

Eintrag: map.entrySet() Typ stimmt nicht überein: Konvertierung von Elementtyp Objekt in Map.Entry Annu

+0

@Annu Werfen Sie einen Blick auf meine Bearbeitung. Ich bin mir immer noch nicht sicher, ob es das ist, was du versuchst. Aber wie gesagt, es sollte dir einen guten Hinweis geben. – Bartzilla

+0

Vielen Dank, du warst wirklich hilfreich ... ich habe es verstanden ... <3 – Annu

Verwandte Themen