乙级PAT真题之数字分类(字符串类型的格式化)
/* 数字分类 */ 给定一系列正整数,请按要求对数字进行分类,并输出以下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”。 输入例子: 13 1 2 3 4 5 6 7 8 9 10 20 16 18 输出例子: 30 11 2 9.7 9
package abc; import java.util.Scanner; public class Main { public static void main(String [] args) { Scanner input = new Scanner(System.in); int t = input.nextInt(); int a[] = new int[5]; for(int i=0;i<a.length;i++) { a[i]=0; } int tnt=0; int tnt2=0; for(int i=0;i<t;i++) { int x = input.nextInt(); if(x%10==0) a[0]+=x; if(x%5==1) { a[1] += x*Math.pow(-1,tnt);/// 利用平方来控制正负 tnt++; } if(x%5==2) a[2]++; if(x%5==3) { a[3]+=x;tnt2++; } if(x%5==4) { if(a[4]<x) a[4]=x; } } double a4 = (double)a[3]/tnt2; String s=String.format("%.1f", a4);///字符串类型格式化,类似c语言的printf StringBuffer sbu = new StringBuffer(); for(int i=0;i<a.length;i++) { if(a[i]==0) sbu.append("N "); else { if(i==3) sbu.append(s+" ");///append用于字符串后面追加字符串 else sbu.append(a[i]+" "); } } System.out.println(sbu.toString().trim());///toString()转化为字符串,trim()去掉两边的空格。 } }
不忘初心,方得始终。只有走过弯路,才更确信当初最想要的是什么。