洛谷B2090 年龄与疾病(java)

题目描述

某医院进行一项研究,想知道某项疾病是否与年龄有关。因此对以往的诊断记录进行整理,统计 0-18 、19-35 、36-60、61及以上这四个年龄段的患者人数占总患者人数的比例。

输入格式

输入共 22 行。

第一行包含一个整数 N(0

第二行包含 N 个整数,代表这 N 个患者就诊时的年龄。

输出格式

输出共4行。

第1行包含一个百分数,这个百分数保留小数点后2位,代表 0−18岁这个年龄段的患者人数占总患者人数的比例。

第2行包含一个百分数,这个百分数保留小数点后2位,代表 19−35岁这个年龄段的患者人数占总患者人数的比例。

第3行包含一个百分数,这个百分数保留小数点后2位,代表 36−60岁这个年龄段的患者人数占总患者人数的比例。

第4行包含一个百分数,这个百分数保留小数点后2位,代表 61岁及以上这个年龄段的患者人数占总患者人数的比例。

输入输出样例

输入#1

10
1 11 21 31 41 51 61 71 81 91

输出#1

20.00%
20.00%
20.00%
40.00%

输入#2

12
10 19 86 94 58 57 34 19 88 69 5 13

输出#2

25.00%
25.00%
16.67%
33.33%

运行代码

import java.util.*;
public class Main {
        public static void main(String[]args){
            Scanner s=new Scanner(System.in);
            int N=s.nextInt();
            double sum18=0;
            double sum35=0;
            double sum60=0;
            double sum=0;
            for(int i=1;i<=N;i++){
                int age=s.nextInt();
                if(age>=0 && age<=18){
                    sum18++;
                }
                else if(age>=19 && age<=35){
                    sum35++;
                }
                else if(age>=36 && age<=60){
                    sum60++;
                }
                else if(age>=61){
                    sum++;
                }
            }
            System.out.printf("%.2f%%\n",sum18/N*100);//百分数要*100
            System.out.printf("%.2f%%\n",sum35/N*100);
            System.out.printf("%.2f%%\n",sum60/N*100);
            System.out.printf("%.2f%%\n",sum/N*100);
        }
    }

小结

输入两个百分号%%可以输出百分符号%

当我写完循环提交AC后,发现这道题给的标签是数组,然后我就用数组再写了一个。其实解题的思路是一样的,只不过是将每个年龄段储存在数组里,在输入数据时直接判断年龄,最后进行一个统计。优点是运用数组写的代码会更少一些,不需要额外定义其他的变量。

import java.util.*;
public class Main {
        public static void main(String[]args){
            Scanner s=new Scanner(System.in);
            int N=s.nextInt();
            double[]a=new double[10];
            for(int i=1;i<=N;i++){
                int age=s.nextInt();
                if(age<=18){
                    a[1]++;
                }
                if(19<=age && age<=35){
                    a[2]++;
                }
                if(36<=age && age<=60){
                    a[3]++;
                }
                if(age>=61){
                    a[4]++;
                }
            }
            System.out.printf("%.2f%%\n",(a[1])/N*100);
            System.out.printf("%.2f%%\n",(a[2])/N*100);
            System.out.printf("%.2f%%\n",(a[3])/N*100);
            System.out.printf("%.2f%%\n",(a[4])/N*100);
        }
    }

你可能感兴趣的:(java,算法)