0

I have Array list with integer values from 2 to 6, and I test if each number is odd or even as following:

JSONObject outerObject = new JSONObject();
JSONArray outerArray = new JSONArray();
JSONObject [] innerObject = new JSONObject[list1.size()];
        for ( i = 0; i < list1.size(); i++)// change to list1.size()
            {
                innerObject[i]=new JSONObject();
                innerObject[i].put("Item" , list1.get(i));
                if(list1.get(i)%2==0)
                {
                    innerObject[i].put("Odd or Even", "number "+list1.get(i)+" is even");
                }
                else
                    innerObject[i].put("Odd or Even", "number "+list1.get(i)+" is odd");                  
                outerArray.put(innerObject[i]);
            }
        outerObject.put("rows", outerArray);
        return outerObject.toString();

then I have the following JSON file results

{"rows":[
{"Item":2,"Odd or Even":"number 2 is even"},
{"Item":3,"Odd or Even":"number 3 is odd"},
{"Item":4,"Odd or Even":"number 4 is even"},
{"Item":5,"Odd or Even":"number 5 is odd"},
{"Item":6,"Odd or Even":"number 6 is even"}
]}

now I want to find the multiplication between the array list item like:

{"rows":[
    {"Item":2,"Odd or Even":"number 2 is even", "Multiplication:[4,6]"},
    {"Item":3,"Odd or Even":"number 3 is odd","Multiplication:[6]"},
    {"Item":4,"Odd or Even":"number 4 is even"},
    {"Item":5,"Odd or Even":"number 5 is odd"},
    {"Item":6,"Odd or Even":"number 6 is even"}
    ]}

I know that I need to use another for loop inside the first loop, something like this

for (j=i; j < list1.size(); j++)
            {
                inerArray[j]=new JSONArray();
                if (list1.get(j)%list.get(i)==0)
                    inerArray[j].put(list1.get(j));

            }
innerObject[i].put("Multiplication" , inerArray);

but it does not work

I'm using Java and Restful web service

2 Answers 2

2

You can try this if it useful for you :-

public static void main(String args[]){
    List<Integer> list1 = new ArrayList<Integer>();
    list1.add(2);
    list1.add(3);
    list1.add(4);
    list1.add(5);
    list1.add(6);
    JSONObject outerObject = new JSONObject();
    JSONArray outerArray = new JSONArray();
    List<Integer> duplicateValue=new ArrayList<Integer>();
    JSONObject [] innerObject = new JSONObject[list1.size()];
            for (int  i = 0; i < list1.size(); i++)// change to list1.size()
                {
                    JSONArray inerArray = new JSONArray();
                    innerObject[i]=new JSONObject();
                    innerObject[i].put("Item" , list1.get(i));
                    if(list1.get(i)%2==0)
                    {
                        innerObject[i].put("Odd or Even", "number "+list1.get(i)+" is even");
                    }
                    else{
                        innerObject[i].put("Odd or Even", "number "+list1.get(i)+" is odd"); 
                    }
                    for (int j=i; j < list1.size(); j++)
                    {
                        if(list1.get(j)!=list1.get(i)){
                            if (list1.get(j)%list1.get(i)==0){
                                    if(!duplicateValue.contains(list1.get(j))){
                                    inerArray.add(list1.get(j));
                                    duplicateValue.add(list1.get(j));
                                }
                            }
                        }
                    }
                    if(inerArray.size()!=0){
                        innerObject[i].put("Multiplication" , inerArray);
                    }
                    outerArray.add(innerObject[i]);
                }

            outerObject.put("rows", outerArray);
            System.out.println(outerObject.toString());
}

OutPut :- {"rows":[{"Item":2,"Odd or Even":"number 2 is even","Multiplication":[4,6]},{"Item":3,"Odd or Even":"number 3 is odd","Multiplication":[6]},{"Item":4,"Odd or Even":"number 4 is even"},{"Item":5,"Odd or Even":"number 5 is odd"},{"Item":6,"Odd or Even":"number 6 is even"}]}

Sign up to request clarification or add additional context in comments.

6 Comments

Thank you very much, that was really helpful I modify your code changing inerArray.put instead of inerArray.add, and inerArray.length() instead of inerArray.size() Thanx again
can I ask one more question about the same issue? @NaveenG
What if the main array list contains duplicated values, such as 2 3 4 4 5 6 6. How can I check the existence of an element before adding it to JSON Array, I mean before this line: inerArray.add(list1.get(j));
My idea is to copy JSON array element to hash map, to delete duplication and then copy this hash map back to JSON array, but don't know how to perform that
Yes you can do it, I will update my existing code with your requirement.
|
0

I sorted out your problem. You can try this.

public static void main(String[] args) throws JSONException {
    List<Integer> list1 = new ArrayList<>();
    list1.add(2);
    list1.add(3);
    list1.add(4);
    list1.add(5);
    list1.add(6);
    JSONObject outerObject = new JSONObject();
    JSONArray outerArray = new JSONArray();
    JSONObject[] innerObject = new JSONObject[list1.size()];
    for (int i = 0; i < list1.size(); i++)// change to list1.size()
        {
        innerObject[i] = new JSONObject();
        innerObject[i].put("Item", list1.get(i));
        if (list1.get(i) % 2 == 0) {
            innerObject[i].put("Odd or Even", "number " + list1.get(i) + " is even");
        } else{
            innerObject[i].put("Odd or Even", "number " + list1.get(i) + " is odd");
        }
        //Finding Multiplication
        int currentNumber = list1.get(i);
        String mulitplcationNumbers = "[";
        for(Integer numberFromList : list1){
            if(numberFromList !=currentNumber && numberFromList % currentNumber==0){
                mulitplcationNumbers+=numberFromList + ",";
            }
        }
        if(!mulitplcationNumbers.equals("[")){
            mulitplcationNumbers = mulitplcationNumbers.substring(0, mulitplcationNumbers.length()-1);
            innerObject[i].put("Multiplication", mulitplcationNumbers + "]");
        }
        outerArray.put(innerObject[i]);
    }
    outerObject.put("rows", outerArray);
    System.out.println(outerObject.toString());
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.