【練習題】財富排行榜

木头左發表於2024-04-13

題目描述 很多資訊學選手,在很多領域做出了非常大的貢獻,為國家科技的發展出了很多力,有不少還是開領了科技的先河。葉老師這邊帶過競賽的學生也有不少考上了清華北大,他們將會繼續深造,以便發揮出自己的才能。在這些選手實現為科技進步貢獻的同時,他們也實現了自我價值。比如: 清華大學畢業的樓教主 身價百億 浙江理工大學畢業的王學集、陳燎罕 IPO 900億 浙江理工大學畢業的章同學 畢業2年 年薪150萬 … 現在葉老師想統計下這些同學的身價、行業發展潛力,並希望你幫忙從高到低排個序,排序規則: 1 按照身價從高到低排序 2 如果身價相同,按照行業發展潛力從高到低排序 3 如果身價、行業發展潛力都相同,按照輸入的序號從小到大排序

輸入 第一行輸入一個整數n ( 1 <= n <= 100) 之後n行,每行輸入姓名(最多不超過20個字元)、身價(整數)、行業發展潛力(整數) 輸出 輸出n行,為按規則排序後的n個,每行輸出序號、姓名、身價、行業發展潛力、未來身價(未來身價=身價*行業發展潛力)中間用空格隔開 樣例輸入 Copy 3 loujiaozhu 100 12 wangxueji 900 3 chenliaohan 900 3 樣例輸出 Copy 2 wangxueji 900 3 2700 3 chenliaohan 900 3 2700 1 loujiaozhu 100 12 1200

import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
public class Main{
    static class Per{
        public Per(int no, String name, int pr,int f){
            this.no = no;
            this.name=name;
            this.pr=pr;
            this.f=f;
        }
        public int no;
        public String name;
        public int pr;
        public int f;
    }

    public static void main(String args[]){
        int n;
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        List<Per> list = new LinkedList<Per>();

        for(int i=1;i<n+1;i++){
            Per per = new Per(i,(String)sc.next(),sc.nextInt(),sc.nextInt());
            list.add(per);
        }
         list.sort((p1,p2) -> {
             if(p1.pr > p2.pr || (p1.pr == p2.pr && p1.f > p2.f) || (p1.pr == p2.pr && p1.f == p2.f && p1.no < p2.no)){
                 return -1;
             }
             return 1;

         });
        for(Per p : list){
            System.out.println(p.no + " " +p.name + " " + p.pr + " " +p.f + " " + p.pr*p.f);
        }
    }
}

相關文章