题目有上面有链接

解题思路:

  1. 根据输入描述,用集合ArrayList接收录入的所有正整数。
  2. 根据A1-A5的条件,写5个方法返回对应的结果,若没有条件所描述的数字返回-1。
  3. 在主方法中接收5方法的个结果,if返回值小于0打印N,else打印结果即可。

以下代码在PTA中测试点7为答案错误,希望大家能帮忙看看,谢谢

import java.util.ArrayList;
import java.util.Scanner;

public class NumberClass {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        //使用集合存放正整数
        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 0; i < N; i++) {
            list.add(sc.nextInt());
        }
        //调用方法实现A1-A5的条件,返回相应的值
        int even = evenSum(list);
        int exchange = exchangeSum(list);
        int num = number(list);
        double ave = average(list);
        String save = String.format("%.1f", ave);//A4需要保留一位小数
        int max = maxNumber(list);
        //返回值小于0则打印“N”
        print(even);
        print(exchange);
        print(num);
        if(ave<0){
            System.out.print("N ");
        }else {
            System.out.print(save+" ");
        }
        //末尾不能有空格
        if(max<0){
            System.out.println("N");
        }else {
            System.out.println(max);
        }
    }
    //A1:能被5整除的数字中所有偶数的和;
    public static int evenSum(ArrayList<Integer> list){
        int sum = 0;
        boolean flag = false;
        for (int i = 0; i < list.size(); i++) {
            if(list.get(i)%5 == 0 && list.get(i)%2 == 0){
                sum += list.get(i);
                flag = true;
            }
        }
        //flag为true表明有符合条件的数,否则返回-1
        if(flag) {
            return sum;
        }else {
            return -1;
        }
    }
    //A2:将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4...;
    public static int exchangeSum(ArrayList<Integer> list){
        int count = 0;//用于实现交错相加
        int sum = 0;
        for (int i = 0; i < list.size(); i++) {
            if(list.get(i)%5 == 1){
                count++;
                if(count%2 == 0){
                    sum -= list.get(i);
                }else {
                    sum += list.get(i);
                }
            }
        }
        //count大于0表明有符合条件的数,否则返回-1
        if(count>0){
            return sum;
        }else {
            return -1;
        }
    }
    //A3:被5除后余2的数字的个数;
    public static int number(ArrayList<Integer> list){
        int count = 0;
        for (int i = 0; i < list.size(); i++) {
            if(list.get(i)%5 == 2){
                count++;
            }
        }
        if(count > 0){
            return count;
        }else {
            return -1;
        }
    }
    //A4被5除后余 3的数字的平均数,精确到小数点后1位
    public static double average(ArrayList<Integer> list){
        int count = 0;
        double sum = 0;
        for (int i = 0; i < list.size(); i++) {
            if(list.get(i)%5 == 3){
                sum += list.get(i);
                count++;
            }
        }
        if(count > 0){
            double ave = sum/count;
            return ave;
        }else {
            return -1.0;
        }
    }
    //A5 被 5 除后余 4 的数字中最大数字
    public static int maxNumber(ArrayList<Integer> list){
        int max = -1;
        for (int i = 0; i < list.size(); i++) {
            if(list.get(i)%5 == 4){
                if (list.get(i) > max){
                    max = list.get(i);
                }
            }
        }
        //最大数有可能就是0
        if(max >= 0){
            return max;
        }else {
            return -1;
        }
    }
    //打印
    public static void print(int x){
        if(x<0){
            System.out.print("N ");
        }else {
            System.out.print(x + " ");
        }
    }
}