码迷,mamicode.com
首页 > 编程语言 > 详细

两个java小练习

时间:2014-12-23 20:50:23      阅读:270      评论:0      收藏:0      [点我收藏+]

标签:

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

 

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小练习

标签:

原文地址:http://www.cnblogs.com/stevengerrard/p/4180764.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!