Java教程

Java题解—1012 数字分类 (20 分)

本文主要是介绍Java题解—1012 数字分类 (20 分),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

原题

跳转地址
给定一系列正整数,请按要求对数字进行分类,并输出以下 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 的待分类的正整数。数字间以空格分隔。

输出格式:
对给定的 N 个正整数,按题目要求计算 A1​~A5​ 并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。
若其中某一类数字不存在,则在相应位置输出 N。

代码

package pat;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();

        int case0=0,case1=0,case2=0,case3=0,case4=0;//接收每种情况的结果
        boolean flag0=false,flag1=false,flag2=false,flag3=false,flag4=false;//标志某类数字是否存在
        int count=0;
        int massage1=0;
        //条件判断
        for (int i=0;i<N;i++){
            int num = scanner.nextInt();
            switch (num%5){
                case 0:if (num%2==0){
                    case0+=num;
                    flag0=true;
                }
                    break;//注意,break要放if外面,才能跳出switch
                case 1:
                    massage1++;//计数用来交叉求和。因为奇数是加,偶数是减
                    if (massage1%2==0){
                        case1-=num;
                    }else {
                        case1+=num;
                    }
                    flag1=true;
                    break;

                case 2:case2++;flag2=true;break;

                case 3:
                    case3+=num;
                    flag3=true;
                    count++;
                    break;

                case 4:
                    if (num>case4){
                    case4=num;
                    flag4=true;
                }
                break;
            }
        }
        //输出
        Object o;//注意:三元运算符与if不同的是,必须有一个变量来承载后面表达式的结果
        o=flag0 ? System.out.printf(case0+" "):System.out.printf("N ");
        o=flag1 ? System.out.printf(case1+" "):System.out.printf("N ");
        o=flag2 ? System.out.printf(case2+" "):System.out.printf("N ");

        double average=(double)case3/count;
        o=flag3 ? System.out.printf("%.1f",average):System.out.printf("N") ;
        o=flag4 ? System.out.printf(" "+case4):System.out.printf(" N");

    }
}
这篇关于Java题解—1012 数字分类 (20 分)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!