0
点赞
收藏
分享

微信扫一扫

数字的分类

代码敲到深夜 2022-03-10 阅读 21

在这里插入图片描述
输入格式:
每个输入包含 1 个测试用例。每个测试用例先给出一个不超过 1000 的正整数 N,随后给出 N 个不超过 1000 的待分类的正整数。数字间以空格分隔。
输出格式:
对给定的 N 个正整数,按题目要求计算 A1~A5并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。若分类之后某一类不存在数字,则在相应位置输出N。

输入样例113 1 2 3 4 5 6 7 8 9 10 20 16 18
输出样例130 11 2 9.7 9

输入样例28 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();
举报

相关推荐

0 条评论