在ArrayList中添加偶数元素并返回修改后的ArrayList

时间:2017-04-22 12:43:56

标签: java arraylist

package com.company;

import java.util.*;
import java.io.*;

public class Main {
    public static int processArray(ArrayList<Integer> array) {

    int sum=0;
    for (int i=0;i<array.size()-1;i++) {
            if (array(i) %2 == 0 && array.get(i+1)%2==0){
                    sum += array.get(i);
                    array.set(i,sum);
                    array.remove(i+1);
                    i--;
            }
    }
    return array.size();
}

public static void main (String[] args) {
    ArrayList<Integer> arrayList = new ArrayList<Integer>();
    Scanner in = new Scanner(System.in);
    while(in.hasNextInt()) {
        int num = in.nextInt();
        if (num < 0)
            break;
        arrayList.add(new Integer(num));
    }
    int new_length = processArray(arrayList);
    for(int i=0; i<new_length; i++)
        System.out.println(arrayList.get(i));
}
}

=======================================

输入

3 6 36 61 121 66 26 376 661 6 -1

我需要输出

3 42 61 121 468 661 6

我的输出

3 6 42 61 121 66 92 468 661 6

我在这里做错了什么?

2 个答案:

答案 0 :(得分:2)

由于其他人正在尝试(并且失败)为您提供工作解决方案,所以在这里,对更改的行进行评论:

public static ArrayList<Integer> processArray(ArrayList<Integer> array) {
    for (int i = 0; i < array.size() - 1; i++) { // don't process last value (it has no next value)
        if (array.get(i) % 2 == 0 && array.get(i+1) % 2 == 0) {
            int sum = array.get(i) + array.get(i+1); // add current and next value
            array.set(i, sum); // update current value
            array.remove(i+1); // remove next value
            i--; // make sure we re-process current value, to compare with "new" next value
        }
    }
    return array; // return modified array
}

答案 1 :(得分:-1)

请尝试以下代码。这将计算在arraylist中输入的所有偶数索引数字的总和,删除偶数索引数字,您将拥有更改的列表。

(\()?(\+62|62|0)(\d{2,3})?\)?[ .-]?\d{2,4}[ .-]?\d{2,4}[ .-]?\d{2,4}