2021-01-11

1183:病人排队 java

病人登记看病,编写一个程序,将登记的病人按照以下原则排出看病的先后顺序:

1.老年人(年龄 >= 60岁)比非老年人优先看病。

2.老年人按年龄从大到小的顺序看病,年龄相同的按登记的先后顺序排序。

3.非老年人按登记的先后顺序看病。

【输入】
第1行,输入一个小于100的正整数,表示病人的个数;

后面按照病人登记的先后顺序,每行输入一个病人的信息,包括:一个长度小于10的字符串表示病人的ID(每个病人的ID各不相同且只含数字和字母),一个整数表示病人的年龄,中间用单个空格隔开。

【输出】
按排好的看病顺序输出病人的ID,每行一个。

【输入样例】
5
021075 40
004003 15
010158 67
021033 75
102012 30
【输出样例】
021033
010158
021075
004003
102012
下面展示一些 内联代码片


import java.util.Scanner;

public class Main {
	public static void main(String[] args){
		Scanner input =new Scanner (System.in);
		int n=input.nextInt();
		Patient [] patient =new Patient[n];
		for(int i=0;i<n;i++){
		    patient[i]=new Patient();
		}
		Patient patien=new Patient();
		int t = 0;
		for(int i=0;i<n;i++) {
			patient[i].id= input.next();
			patient[i].age= input.nextInt();
			patient[i].que=i;
			}
		for(int i=0;i<n-1;i++) {
			for(int j=i+1;j<n;j++) {
				if(patient[i].age>=60&&patient[i].age<patient[j].age) {  //大于60 ago相等 
					patien=patient[i];
					patient[i]=patient[j];
					patient[j]=patien;	
				else if(patient[i].age==patient[j].age&&patient[i].que>patient[j].que){
					patien=patient[i];
					patient[i]=patient[j];
					patient[j]=patien;	
				}
			}
		}
		for(int i=0;i<n;i++) {  //输出 ago>60
			if(patient[i].age>=60) {
				System.out.println(patient[i].id);
			}
		}
		for(int i=0;i<n;i++) {  //输出 ago<60
			if(patient[i].age<60) {
				System.out.println(patient[i].id);
			}
		}
	}
}
class Patient{    //定义一个Patien 类
	public String id;
	public int age;
	public int que;
}

AC这到提还是有点。。。感觉自己太垃圾了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值