数字的分类

在这里插入图片描述
输入格式:
每个输入包含 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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值