Sabir Hussain
Sabir Hussain

Reputation: 11

How to remove logical error

I want to print the all values in the array but it just prints the last value int the array, how can I get my desired result by improving this code:

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

Upvotes: 0

Views: 166

Answers (3)

HendraWD
HendraWD

Reputation: 3043

Try this simplified solution to show all of the attendance

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

Upvotes: 0

Hello World
Hello World

Reputation: 2774

This is may be you have defined array as:

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

try initializing as:

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

Upvotes: 0

Sanjeev
Sanjeev

Reputation: 9946

That is because you are overwriting same key with different value every time

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

So your hashmap will only have last value written against the key absent[]

Upvotes: 1

Related Questions