2016-08-04 61 views
0

我想打印在陣列中的所有值,但它只是打印陣列INT的最後一個值,我怎麼能改善這個代碼得到我想要的結果:如何刪除邏輯錯誤

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

我覺得你不需要改變你的數組列表中數組,並且你不需要使用hashmap來顯示所有的值 – HendraWD

+0

@HendraWijayaDjiono格式化代碼等是好的,改變問題代碼是不是(特別是如果你引入新的錯誤) – deviantfan

+0

爲什麼你把它標記爲'C++'? – PaulMcKenzie

回答

1

也就是說因爲你每

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

所以,你的HashMap中只會有最後的值寫入對關鍵absent[]

0

這是一次覆蓋不同的值相同的密鑰可能是你有高清獨立非執行董事數組:

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

嘗試爲初始化:

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

試試這個簡單的解決方案來顯示所有的考勤

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"); 
    } 
}