你没有限制是int还是Integer? 而且是否可以用java.util.比如List? 考虑到对用户输入的校验,下面的代码还是用了Scanner,ArrayList及StringTokenizer,最后再把ArrayList转换到了array,然后按要求统计。
// 1447199934860093700
//import java.util.Scanner;
//import java.util.StringTokenizer;
import java.util.*;
public class OddEvenArrayStat
{
public static void main (String[] args)
{
Scanner scan = new Scanner(System.in);
final int size = 20;
List<Integer> a_odd = new ArrayList<Integer>();
List<Integer> a_even = new ArrayList<Integer>();
System.out.println("Enter "+size+" numbers: ");
int i = 0;
while (i < size) {
String line = scan.nextLine();
StringTokenizer tokenizer = new StringTokenizer(line,", ;");
while ( tokenizer.hasMoreTokens() ) {
try {
String token = tokenizer.nextToken();
int val = Integer.parseInt(token);
if (val % 2 == 0) a_even.add(val);
else a_odd.add(val);
++i;
} catch (NumberFormatException nfe) {}
}
}
int[] odd = new int[a_odd.size()];
int[] even = new int[a_even.size()];
i = 0;
for (Iterator<Integer> it = a_odd.iterator(); it.hasNext(); odd[i++] = it.next());
i = 0;
for (Iterator<Integer> it = a_even.iterator(); it.hasNext(); even[i++] = it.next());
int sum_odd = 0, sum_even = 0;
for (i = 0; i < odd.length; ++i ) sum_odd += odd[i];
for (i = 0; i < even.length; ++i ) sum_even += even[i];
System.out.println("Sum of odd is: " + sum_odd);
System.out.println("Sum of even is: " + sum_even);
}
}
运行(运行用户任意输入,一行一个,或多个,只要有效的输入『20个整数』满足即可):
C:\>java OddEvenArrayStat
Enter 20 numbers:
2 4 6 8 1 3 5 7 0 a b c e ! _^
10 9 12 11 13 14 15 20 19 17
22
Sum of odd is: 100
Sum of even is: 98