/**
* 题目:给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字:
* A1 = 能被5整除的数字中所有偶数的和;
* A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4...
* A3 = 被5除后余2的数字的个数;
* A4 = 被5除后余3的数字的平均数,精确到小数点后1位;
* A5 = 被5除后余4的数字中最大数字。
* 输入描述:每个输入包含1个测试用例。每个测试用例先给出一个不超过1000的正整数N,随后给出N个不超过1000的待分类的正整数。数字间以空格分隔。
* @param args
*/
import java.math.BigDecimal;//对小数进行格式化
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int A1 = 0; boolean A1F = false;//A1F是A1的flag,用来检测A1是否进行过运算
int A2 = 0; int A2flag = 1; boolean A2F = false;
int A3 = 0;
double A4 = 0.0f; int count = 0;
int A5 = 0;
Scanner input = new Scanner(System.in);
String s = input.nextLine();
//字符串转String数组
String[] str = s.split(" ");
//在这里忽略了容量N,直接从第一个数据开始拿
for(int i=1; i < str.length; i++){
int num = Integer.parseInt(str[i]);
if(num % 10 == 0){
A1 += num;
A1F = true;
}
if(num % 5 == 1){
A2 += num*A2flag;
A2flag *= -1;
A2F =true;
}
if(num % 5 == 2){
A3++;
}
if(num %5 == 3){
count++;
A4 += num;
//在循环外进行求和操作
}
if(num % 5 == 4){
if(A5 < num){
A5 = num;
}
}
}
//判断输出,注意输出格式
if(A1 > 0&& A1F){
System.out.print(A1+" ");
}else{
System.out.print("N ");
}
if(A2F){
System.out.print(A2+" ");
}else{
System.out.print("N ");
}
if(A3 > 0){
System.out.print(A3+" ");
}else{
System.out.print("N ");
}
if(count > 0){
A4 = A4/count;
//格式化A4,保留小数点后一位数字(四舍五入)
BigDecimal b = new BigDecimal(A4);
//保留1位小数
double f1 = b.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.print(f1 +" ");
}else{
System.out.print("N ");
}
if(A5 > 0){
System.out.print(A5);
}else{
System.out.print("N");
}
}
知识点:
1.字符串转String数组
2.对小数位的处理,有时候是直接截取小数位,有时候是需要四舍五入