2016-08-04 8 views
0

ich die alle Werte im Array drucken, aber er druckt nur den letzten Wert int Array, wie kann ich mein gewünschtes Ergebnis erhalten, indem Sie diesen Code zu verbessern:Wie will logische Fehler entfernen

public void applyAttendence(ArrayList<String> presents, ArrayList<String> absents) { 
    ArrayList<String> present = new ArrayList<String>(); 
    HashMap params = new HashMap(); 
    // [232, 232, 12, 223] 
    String[] stringArray = presents.toArray(new String[0]); 
    if (presents.size() == 0) { 
     params.put("present", ""); 
    } else { 

     // for(String pre:presents) { 
     params.put("present", stringArray); 

     System.out.println(" present[]" + presents); 
     System.out.println("hellow present man: " + params.get("present")); 
     // } 
     System.out.println("hellow present man: " + params.get("present")); 
    } 

    if (absents.size() == 0) { 
     params.put("absent", ""); 
    } else { 
     for (String abs : absents) { 
     params.put("absent[]", abs); 
     } 
     // params.put("present[]", presents + ""); 
     // 
     params.put("absent[]", absents + ""); 
    } 
} 
+0

Ich glaube, Sie nicht Ihre Array-Liste ändern müssen zu array, und Sie müssen nicht hashmap verwenden, um alle Werte anzuzeigen – HendraWD

+0

@HendraWijayaDjiono Formatieren von Code usw. ist in Ordnung, ändernde Frage Code ist nicht (vor allem, wenn Sie neue Fehler einführen) – deviantfan

+0

Warum hast du das als 'C++' markiert? – PaulMcKenzie

Antwort

1

Das heißt weil Sie jedes Mal,

for (String abs : absents) { 
    params.put("absent[]", abs); 
} 

So Ihre hashmap nur haben gegen den Schlüssel letzten Wert absent[]

0

geschrieben wird denselben Schlüssel mit anderen Wert überschreiben sein Dies ist möglicherweise def haben ined Array als:

String[] stringArray = presents.toArray(new String[0]); 

versuchen, so zu initialisieren:

String[] stringArray = new String[presents.size()]; 
stringArray = presents.toArray(stringArray); 
0

Versuchen Sie, diese vereinfachte Lösung zu zeigen, all die Teilnahme

public void applyAttendence(ArrayList<String> presents, ArrayList<String> absents) { 
    String sPresent = ""; 
    for (String present : presents) { 
     sPresent += present + ", "; 
    } 
    if (!sPresent.equals("")) 
     sPresent = sPresent.substring(0, sPresent.length() - 2); 
    String sAbsent = ""; 
    for (String absent : absents) { 
     sAbsent += absent + ", "; 
    } 
    if (!sAbsent.equals("")) 
     sAbsent = sAbsent.substring(0, sAbsent.length() - 2); 
    if (presents.size() > 0) { 
     System.out.println("present = " + sPresent); 
    } else { 
     System.out.println("present = no one"); 
    } 
    if (absents.size() > 0) { 
     System.out.println("absent = " + sAbsent); 
    } else { 
     System.out.println("absent = no one"); 
    } 
}