输入格式:
每个输入包含 1 个测试用例。每个测试用例先给出一个不超过 1000 的正整数 N,随后给出 N 个不超过 1000 的待分类的正整数。数字间以空格分隔。
输出格式:
对给定的 N 个正整数,按题目要求计算 A1~A5并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。若分类之后某一类不存在数字,则在相应位置输出N。
输入样例1:
13 1 2 3 4 5 6 7 8 9 10 20 16 18
输出样例1:
30 11 2 9.7 9
输入样例2:
8 1 2 4 5 6 7 9 16
输出样例2:
N 11 2 N 9
解题思路:按照题给的判断就可以
import java.util.*;
import java.text.*;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String[] ss = sc.nextLine().split(" ");
if(ss.length == 0) System.exit(0);
int n = Integer.valueOf(ss[0]);
if(n > ss.length - 1) System.exit(0);
int a1 = 0;
int a2 = 0;
boolean b = false;//用来标记第二个有没有执行
int count = 1;//标记第二个是加还是减
int a3 = 0;
int count1 = 0;//统计第三个个数
int a4 = 0;
int a5 = -1;
StringBuffer sb = new StringBuffer();
for(int i = 1;i<ss.length;i++){
int tmp = Integer.valueOf(ss[i]);
if(tmp % 10 == 0){
a1 += tmp;
}else if(tmp % 5 == 1 && count == 2){
a2 -= tmp;
count = 1;
b = true;
}else if(tmp % 5 == 1 && count == 1){
a2 += tmp;
count++;
b = true;
}else if(tmp % 5 == 2){
a3++;
}else if(tmp % 5 == 3){
a4 += tmp;
count1++;
}else if(tmp % 5 == 4){
a5 = a5 >= tmp? a5 : tmp;
}
}
if(a1 == 0){
sb.append("N ");
}else{
sb.append(a1+" ");
}
if(!b){
sb.append("N ");
}else{
sb.append(a2+" ");
}
if(a3 == 0){
sb.append("N ");
}else{
sb.append(a3+" ");
}
if(a4 == 0){
sb.append("N ");
}else{
double res = (double)a4 / count1;
//用来处理小数点位数的,题目要求精确到小数点1位。
NumberFormat df = NumberFormat.getNumberInstance();
df.setMaximumFractionDigits(1);
sb.append(df.format(res)+" ");
}
if(a5 == -1){
sb.append("N");
}else{
sb.append(a5);
}
System.out.println(sb);
}
}
最后在记录一下本题出错点:
Scanner sc = new Scanner(System.in);
//这个只要接收到空格就会结束,由于本题输入是一个带空格的字符串,
//所以本题输入不能用这个
sc.next();
//这个接收到空格就表示结束
sc.nextLine();