题目有上面有链接
解题思路:
- 根据输入描述,用集合ArrayList接收录入的所有正整数。
- 根据A1-A5的条件,写5个方法返回对应的结果,若没有条件所描述的数字返回-1。
- 在主方法中接收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 + " ");
}
}
}

京公网安备 11010502036488号