黑马程序员技术交流社区

标题: 分享一道基础班中期的题,当时被虐了...... [打印本页]

作者: 岚风    时间: 2016-9-13 18:22
标题: 分享一道基础班中期的题,当时被虐了......
package com.heima.ceshi;

import java.util.Arrays;
import java.util.Comparator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;

public class 机测试9月9_2 {

        /*
         * 题目描述: 书写一个学生类,类名为Student, 学生类需要包含下面类成员变量 姓名(name 字符串类型), 学号(id 整型)
         *
         *
         * 1. 编写无参构造方法.
         *
         * 2. 编写有参构造方法(参数依次为 姓名和id)
         *
         * 3. 编写一个方法,方法名为getAverangeScore,方法接收整型数组代表学员的所有考试成绩, 返回值为浮点类型的所有考试成绩平均分
         *
         *
         * 4. 编写一个方法,方法名printLevel,方法接收整型参数, 返回值为空, 打印学生的等级 如果平均分大于等于90打印: A
         * 如果平均分大于等于80小于90打印: B 如果平均分大于等于70小于80打印: C 如果平均分大于等于60小于70打印: D
         * 如果平均分小于60打印: E
         *
         *
         * 5. 编写一个方法,方法名为printSort,
         * 方法接收整型数组代表学员的所有考试成绩,没有返回值,要求在方法体中按照有高到低打印成绩,用空格分隔。 例如: 传入参数
         * [80,70,60,85,90] 打印结果为: 90 85 80 70 60
         *
         *
         * 6.
         * 编写一个方法,方法名为printSubject,方法接收Map参数(key代表学科,value代表分数),没有返回值,按照分数由高到低打印学生成绩
         * 。 格式为: Java80 Android70 C60
         *
         * @param args
         */
        public static void main(String[] args) {

        }

}

class Stdent88 {
        private String name;
        private int id;

        public Stdent88() {
        }

        public Stdent88(String name, int id) {
                super();
                this.name = name;
                this.id = id;
        }

        public float getAverangeScore(int[] arr) {
                float sum = 0;
                for (int i : arr) {
                        sum += i;
                }
                return sum / arr.length;
        }

        public void printLevel(int x) {
                if (x >= 90) {
                        System.out.println("A");
                } else if (x >= 80 && x < 90) {
                        System.out.println("B");
                } else if (x >= 70 && x < 80) {
                        System.out.println("C");
                } else if (x >= 60 && x < 70) {
                        System.out.println("D");
                } else if (x < 60) {
                        System.out.println("E");
                }
        }

        public void printSort(int[] arr) {
                // 类名调用sort方法对数组排序,由于题目要求是从高到低打印,所以反过来遍历打出,
                //当然这里也可以用TreeSet集合重写比较器的方法,还有可以使用冒泡排序等方法做
                Arrays.sort(arr);
                for (int i = arr.length; arr.length > 0; i--) {
                        System.out.print(arr[i]);
                }
        }

        public void printSubject(Map<String, Integer> map) {
                //创建的TreeMap集合,因为比较器是用key键比较的,所以将分数作为键, 姓名作为值
                TreeMap<Integer, String> map1 = new TreeMap<>(
                                new Comparator<Integer>() {
                                        @Override
                                        public int compare(Integer arg0, Integer arg1) {
                                                int num = arg1 - arg0;
                                                return num == 0 ? 1 : num;
                                        }
                                });
               
                //遍历传入的Map集合,并将其添加进自定义的TreeMap集合
                for (Entry<String, Integer> set : map.entrySet()) {
                        map1.put(set.getValue(), set.getKey());
                }
                //按照题目要求打印
                for (Entry<Integer, String> set1 : map1.entrySet()) {
                        System.out.print(set1.getValue() + set1.getKey() + " ");
                }

        }
}


作者: 370452158    时间: 2016-9-13 20:23
我也遇到过,当时也觉得难




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2