题目:
给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字:A 1=能被 5 整除的数字中所有偶数的和;A 2= 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算 n 1 −n 2 +n 3 −n4 ⋯;A 3 = 被 5 除后余 2 的数字的个数;A 4= 被 5 除后余 3 的数字的平均数,精确到小数点后 1 位;A 5
= 被 5 除后余 4 的数字中最大数字。
代码实现:
import java.util.Scanner;
public class Main {
static int[] A = { 0, 0, 0, 0, 0 };
static boolean[] flag = { false, false, false, false, false }; // 其实主要是给余数为1的设置,不过为了可读性这里都设置了
static int a3Count = 0;
public static void main(String[] args) {
Scanner sca = new Scanner(System.in);
int N = sca.nextInt();
boolean plusMinus = false; // 用来判断交错求和的加减,false为加
for (int i = 0; i < N; i++) {
int digit = sca.nextInt();
int remainder = digit % 5;
if (remainder == 0) {
if (digit % 2 == 0) {
A[0] += digit;
flag[0] = true;
}
} else if (remainder == 1) {
A[1] = plusMinus ? (A[1] - digit) : (A[1] + digit);
plusMinus = !plusMinus;
flag[1] = true;
} else if (remainder == 2) {
A[2]++;
flag[2] = true;
} else if (remainder == 3) {
A[3] += digit;
a3Count++;
flag[3] = true;
} else {
if (digit > A[4])
A[4] = digit;
flag[4] = true;
}
}
showResult();
}
private static void showResult() {
for (int i = 0; i < 5; i++) {
if (!flag[i]) // 用flag判断该分类是否有成员加入,无则false输出字符N
System.out.print("N");
else if (i == 3)
System.out.printf("%.1f", ((float) A[3] / (float) a3Count));
else
System.out.print(A[i]);
if (i < 4)
System.out.print(" ");
}
}
}