java基础练习题及答案2

/**
* 一. 假设顺序列表ArrayList中存储的元素是整型数字1~5,遍历每个元素,将每个元素顺序输出。
*/

   public static void homework1() {
        ArrayList list = new ArrayList<>();
        for (int i = 1; i < 6; i++) {
            list.add(i);
        }

        System.out.println(list);
    }

/**

  • 二.生成10个1到20之间的不重复的随机数
  • 提示:
    1. 需要生成随机数,那么需要Random类
    1. 需要存储10个不能重复的数,需要HashSet集合
    1. 判断,当HashSet的Size小于10就往里存储随机数,等于就停止添加存储元素
    1. 通过Random的nextInt()方法获取随机数并加入到HashSet里
    1. 遍历HashSet,打印出10个随机数
      */
  public static void homework2() {
        HashSet set = new HashSet();
        Random random = new Random();
        int num;//保存随机数
        for (int i = 0; i < 10; i++) {
            //随机生成0(包括)到19(不包括)的随机数[0,19) 加1后就是[1,20)
            num = random.nextInt(19) + 1;
            set.add(num);
        }
        System.out.println(set.size());
        //如果集合元素不到10各继续填充,直到10个为止
        while (set.size() < 10) {
            num = random.nextInt(19) + 1;
            set.add(num);
        }
        ;
        System.out.println(set.size());
        //使用迭代器进行循环输出
        Iterator it = set.iterator();
        while (it.hasNext()) {
            System.out.print(it.next() + " ");
        }
    }

三.从键盘获取一行输入字符串,要求去除重复字符。
提示:

  1. 需要使用Scanner类
  2. 输入的是一行字符串,需要转换成字符数组
  3. 创建HashSet集合对象(利用HashSet无法储存相同元素的特性达到去除重复字符的目的)
  4. 字符数组遍历元素,并添加进入HashSet集合
  5. 遍历集合元素
  public static void homework3() {
        //定义一个字符串存储输入字符串
        String str = null;
        // 1. 需要使用Scanner类
        Scanner in = new Scanner(System.in);
        // 2. 输入的是一行字符串
        System.out.print("请输入一个字符串:");
        str = in.next();
        //转换成字符数组
        char[] Sarr = str.toCharArray();
        // 3. 创建HashSet集合对象(利用HashSet无法储存相同元素的特性达到去除重复字符的目的)
        HashSet set = new HashSet<>();
        // 4. 字符数组遍历元素,并添加进入HashSet集合
        for (int i = 0; i < Sarr.length; i++) {
            set.add(Sarr[i]);
        }
        //  5. 遍历集合元素(使用迭代器进行循环输出)
        Iterator it = set.iterator();
        while (it.hasNext()) {
            System.out.print(it.next() + " ");
        }
    }

/**

  • 四、在一个列表中存储以下元素:apple,grape,banana,pear
  • 1 返回集合中的最大的和最小的元素
  • 2 将集合进行排序,并将排序后的结果打印在控制台上
    */
   public static void homework4() {
        //定义一个字符串数组存储apple,grape,banana,pear
        String[] Str = {"apple", "grape", "banana", "pear"};
        //把对应的元素存入列表中
        ArrayList list = new ArrayList<>();
        for (int i = 0; i < Str.length; i++) {
            list.add(Str[i]);
        }
        //1 返回集合中的最大的和最小的元素
        System.out.println("返回集合中的最大值" + Collections.max(list));
        System.out.println("返回集合中的最小值" + Collections.min(list));
        //2 将集合进行排序,并将排序后的结果打印在控制台上
        Collections.sort(list);
        System.out.print("对集合进行排序:" + list);

    }

/**

  • 五. 编写程序,获取命令行参数中的字符串列表,
  • (1)输出其中重复的字符、
  • (2)不重复的字符以及(3)消除重复以后的字符列表。
  • 使用Scanner从控制台读取一个字符串,(4)统计字符串中每个字符出现的次数,
  • 要求使用学习过的知识完成以上要求
  • 实现思路根据Set、List、Map集合的特性完成
    */
   public static void homework5() {
        //控制台输入字符串
        Scanner in = new Scanner(System.in);
        System.out.println("请输入字符串:");
        String Str = in.next();
        char[] Sarr = Str.toCharArray();
        //map集合存储对应元素重复的次数
        HashMap map = new HashMap<>();

        //list集合存储所有字符,通Collections.frequency()方法求元素重复的次数
        ArrayList list = new ArrayList<>();
        for (int i = 0; i < Sarr.length; i++) {
            list.add(Sarr[i]);
        }

        //map中存储对字符和字符对应重复的次数
        for (int i = 0; i < list.size(); i++) {
            map.put(list.get(i), Collections.frequency(list, list.get(i)));
        }
        //输出重复的字符,(map中V大于1的K)
        System.out.print("输出重复的字符:");
        for (Character c : map.keySet()) {
            if (map.get(c) > 1) {
                System.out.print(c + " ");
            }
        }
        //换行
        System.out.println();
        //输出不重复的字符,(map中V等于1的K)
        System.out.print("输出不重复的字符:");
        for (Character c : map.keySet()) {
            if (map.get(c) == 1) {
                System.out.print(c + " ");
            }
        }
        //换行
        System.out.println();
        //输出消除重复后的字符串并输出字符串对应重复的个数
        System.out.println("字符   重复的次数");
        for (Character c : map.keySet()) {
            System.out.println(c + "          " + map.get(c));
        }

    }

/**
*六. 写一个Student类, 包含属性id[1-30), grade[1-6], score[0-100],

  • 所有属性都是随机生成,创建一个Set集合, 保存20个对象,
  • 如果两个对象的id是一样的,则不允许添加. 使用迭代器遍历集合,
  • 打印输出对象的信息, 并找出分数最高的同学和分数最低的同学,
  • 最后打印输出最高分和最低分同学信息.
    */
  public static void homework6() {
        HashSet set = new HashSet<>();
        ArrayList list = new ArrayList<>();

        int id;
        int grade;
        int score;
        int max_sorce = 0;
        int min_sorce = 0;
        Random random = new Random();
        for (int i = 0; i < 20; i++) {

            //通过ArrayList集合存储随机id,若id存入多于1次,就重新随机生成id
            do {
                id = random.nextInt(29) + 1;
                list.add(id);
            } while (Collections.frequency(list, id) > 1);
            //随机生成grade,和score
            grade = random.nextInt(6) + 1;
            score = random.nextInt(101);
            //找到最大的分数和最小的分数
            if (max_sorce < score) {
                max_sorce = score;
            }
            if(min_sorce > score) {
                min_sorce = score;
            }
            Student stu = new Student(id, grade, score);
            set.add(stu);
        }

        String MaxStu = null;
        String MinStu = null;
        //使用迭代器遍历集合
        System.out.println("输出所有同学的信息");
        Iterator it = set.iterator();
        while (it.hasNext()) {
            Student stu = it.next();
            //找到成绩最高和最低同学的信息
            if(stu.getScore()==max_sorce)
                MaxStu = stu.toString();
            if(stu.getScore()==min_sorce)
                MinStu = stu.toString();
            System.out.println(stu.toString());
        }

        System.out.println("输出成绩最高同学的信息"+MaxStu);
        System.out.println("输出成绩最低同学的信息"+MinStu);





    }

你可能感兴趣的:(java)