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
我在这里做错了什么?
答案 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}