首页 > 代码库 > 两个java小练习

两个java小练习

网上看到的一个小练习,自己写了一个,但是时间限制并不符合,并且貌似还有些小问题,暂时放在这儿,代码格式什么的也不太规范。

 

1、班级排名
时间限制: 1000ms 内存限制: 65536kB 
描述 
信息科学技术学院年终评定讲学金,需要对整个年级的学生按照平均分数进行排名.
要求:根据输入的学号和平均成绩,按照平均成绩降序输出学号
如果平均成绩相同,按照输入的顺序输出。 
输入 
第一行为N,表示输入N位学生的信息,接着的N行输入学生信息,1<=N<=500
学生信息的格式为:学号 平均成绩
学号的长度小于10,平均成绩在1-100之间. 
输出 
按照平均成绩降序输出学号,如果平均成绩相同,按照输入顺序输出 

package Some_Demos;import java.io.*;import java.util.*;public class IO_Demo {    //static Map<Integer,Float> scoreNo = new TreeMap<Integer,Float>();    static Map<Integer,Float> scoreNo = new HashMap<Integer,Float>();    static List<Float> score = new ArrayList<Float>();    static List<Integer> no = new ArrayList<Integer>();    public static void sortList(List<Float> flist, List<Integer> ilist){        int length = flist.size();        if(length <= 0)            return;        for(int i=0; i<length; i++){            for(int j=i+1;j<length;j++){                float iTemp = flist.get(i);                float jTemp = flist.get(j);                float floatTemp;                                int ilistTemp1 = ilist.get(i);                int jlistTemp2 = ilist.get(j);                int intTemp;                if(iTemp<jTemp){                    floatTemp = iTemp;                    flist.set(i, jTemp);                    flist.set(j, floatTemp);                                        //intTemp = ilistTemp1;                    ilist.set(i, jlistTemp2);                    ilist.set(j, ilistTemp1);                }            }        }    }    public static void main(String[] args){        long startTime = System.nanoTime();        try{            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));            String strTemp = br.readLine();            String[] strArray;            while(strTemp!=null){                //System.out.println(strTemp);                if(strTemp.equals("bye"))                    break;                strArray = strTemp.split(" ");                //System.out.println(strArray[0] + "-" + strArray[1]);                scoreNo.put(Integer.parseInt(strArray[0]), Float.parseFloat(strArray[1]));                score.add(Float.parseFloat(strArray[1]));                no.add(Integer.parseInt(strArray[0]));                strTemp=br.readLine();            }            System.out.println(scoreNo);            System.out.println(score);            sortList(score,no);            System.out.println(score);            System.out.println(no);                                }catch(IOException e){            System.out.println(e);        }catch(Exception e){            System.out.println(e);        }        long endTime = System.nanoTime();        System.out.println("程序执行共用时:" + ((endTime-startTime)/1000000) + " ms");    }}

 

 

 

 

2、十六进制转十进制
时间限制: 1000ms内存限制: 65536kB
描述
将十六进制数转换成十进制数
输入
第一行有一个整数T,表示共有T组数据
接下来T行,每一行为一个16进制无符号正整数,位数不超过8位,数中的a-f均为大写字母,数前没有多余的0
输出
输出共T行,每一行是一组数据的十进制表示,数字前不得有多余的0。
十进制数小于2^31

 

package Some_Demos;import java.io.*;public class HexToBin {//    public void hexTobin(int[] array){//        int length = array.length;//        for(int j=0; j<length; j++){//            //        }//    }//        public static void main(String[] args){        long startTime = System.nanoTime();        try{            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));            String strNum = br.readLine();            int count = Integer.parseInt(strNum);            if(count <= 0)            {                System.out.println("输入的数字个数应大于0!");                return;            }            int[] hex = new int[count];            String strTemp;            for(int i=0; i<count; i++){                strTemp = br.readLine();                hex[i] = Integer.valueOf(strTemp, 16);                //System.out.println(Integer.valueOf(strTemp,16));            }            //hexTobin(hex);            //System.out.println(hex);                        for(int j=0; j<count; j++)                System.out.println(hex[j]);                    }catch(NumberFormatException e){            System.out.println(e);        }catch(IOException e){            System.out.println(e);        }catch(Exception e){            System.out.println(e);        }                long endTime = System.nanoTime();        System.out.println("程序执行共用时:" + ((endTime-startTime)/1000000) + " ms");    }}

 

两个java小练习