• Java 入门练习(36 - 40)


    JAVA36 判断学生成绩

    描述

    定义一个方法用于录入学生的考试成绩,要求考试成绩必须在0-100之间,不满足就产生一个自定义异常,控制台输出一个错误信息"分数不合法"(请输出自定义异常对象的错误信息,将错误信息设置为分数不合法)

    输入描述

    控制台输入的int类型整数

    输出描述

    若分数合法则输出该分数,否则输出错误信息分数不合法

    示例1

    输入:

    100
    
    • 1

    输出:

    100
    
    • 1

    示例2

    输入:

    -1
    
    • 1

    输出:

    分数不合法
    
    • 1

    解答

    定义一个异常类,然后重写异常类输入异常信息处理的方法,注意此时到了构造方法。然后就是利用 if...else 条件分支对输入进行判断,根据符合的条件进入不同的执行分支。如果输入的分数不满足 [0,100] 的情况,那么就直接抛出异常。

    import java.util.*;
    
    public class Main {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            int score = scanner.nextInt();
    
            try {
                if (score >= 0 && score <= 100)
                    System.out.println(score);
                else {
                    throw new ScoreException("分数不合法");
                }
            } catch (ScoreException str) {
                System.out.println(str.getMessage()); 
            }
    
        }
    }
    
    class ScoreException extends Exception {
    
        public ScoreException(String message) {
            super(message);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    JAVA37 字符串去重

    描述

    从键盘获取一串字符串,要求去除重复的字符。请使用 HashSet 解决这一问题

    输入描述

    键盘输入的任意字符串

    输出描述

    去重后的字符串(不要求顺序,预设代码中已经给出输出)

    示例1

    输入:

    helloworld
    
    • 1

    输出:

    rdewhlo
    
    • 1

    解答

    既然题目中已经提示了利用 HashSet,那么直接使用就好了,但是要注意的是,往 HashSet 里边添加元素得到的结果是无序的,如果要想得到有序的结果,那么则不能使用 HashSet

    import java.util.HashSet;
    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            String str = scanner.nextLine();
            scanner.close();
            HashSet<Character> hs = new HashSet<>();
    
    
            for (int i = 0; i < str.length(); i++) {
                hs.add(str.charAt(i));
            }
    
    
            for (char c : hs) {
                System.out.print(c);
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    JAVA38 集合遍历

    描述

    请使用三种方式遍历一个 list 集合

    输入描述

    键盘任意输入的五个int类型变量

    输出描述

    使用三种不同的方法遍历集合,遍历输出时不换行,数字之间用空格隔开

    示例1

    输入:

    1 2 3 4 5
    
    • 1

    输出:

    普通for循环:1 2 3 4 5 
    增强for循环:1 2 3 4 5 
    迭代器遍历:1 2 3 4 5 
    
    • 1
    • 2
    • 3

    解答

    主要考察基础语法,要牢记的两种 for 循环,一种是普通循环,另一种则是增强循环,而迭代器能掌握就更好了。

    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            List<Integer> list = new ArrayList<>();
            int num1 = scanner.nextInt();
            int num2 = scanner.nextInt();
            int num3 = scanner.nextInt();
            int num4 = scanner.nextInt();
            int num5 = scanner.nextInt();
            scanner.close();
            list.add(num1);
            list.add(num2);
            list.add(num3);
            list.add(num4);
            list.add(num5);
            System.out.print("普通for循环:");
            for (int i = 0; i < list.size(); i++) {
                System.out.print(list.get(i) + " ");
            }
    
            System.out.println();
            System.out.print("增强for循环:");
            for (int num : list) {
                System.out.print(num + " ");
            }
    
            System.out.println();
            System.out.print("迭代器遍历:");
            Iterator it = list.iterator();
            while (it.hasNext()) {
                System.out.print(it.next() + " ");
            }
    
            System.out.println();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    JAVA39 排队系统

    描述

    请设计一个排队程序,用户有普通客人和VIP客人之分,VIP客人不排队(即VIP客人在队列头部),目前队列中已有两位客人小明和小军在排队,请将VIP客人小红新增至队列头部。

    输入描述

    输出描述

    预设代码中已经指定输出

    解答

    对于 VIP 客人,和普通客人最大的区别就在于 VIP 客人不用排队,所以无论何时 VIP 来都可以排到队列的最前边,利用 addFirst() 方法即可实现插队到第一位。

    import java.util.*;
    
    public class Main {
        public static void main(String[] args) {
            Guest guest1 = new Guest("小明", false);
            Guest guest2 = new Guest("小军", false);
            Guest vipGuest = new Guest("小红", true);
            Deque<Guest> deque = new ArrayDeque<>();
            deque.add(guest1);
            deque.add(guest2);
    
            deque.addFirst(vipGuest);
    
            System.out.println(deque);
        }
    }
    class Guest {
        String name;
        Boolean vip;
    
        @Override
        public String toString() {
            return name;
        }
    
        public Guest(String name, Boolean vip) {
            this.name = name;
            this.vip = vip;
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    JAVA40 首尾交替出队

    描述

    现从一队学生中抽人上台演讲,为公平起见,队头队尾交替抽取,请通过程序实现这个出队的过程。

    输入描述

    一组学生的名字

    输出描述

    交替打印队头队尾学生的名字

    示例1

    输入:

    Tom Jim Lily Lucy Mary
    
    • 1

    输出:

    Tom
    Mary
    Jim
    Lucy
    Lily
    
    • 1
    • 2
    • 3
    • 4
    • 5

    解答

    分为两种情况,如果队列长队不小于 2,那么则不断从队列中依次头、尾打印学生名字。另外一种情况就是此时队伍中只有一个学生了,这个时候只需要打印其名字即可。

    import java.util.ArrayDeque;
    import java.util.Scanner;
    
    public class Main {
    
        public static void main(String[] args) {
            ArrayDeque deque = new ArrayDeque();
    
            Scanner scanner = new Scanner(System.in);
            while (scanner.hasNext()) {
                String name = scanner.next();
                // 初始化队列中的数据
                deque.offerLast(name);
            }
    
            while (deque.size() >= 2) {
                System.out.println(deque.pollFirst());
                System.out.println(deque.pollLast());
            }
            if (deque.size() > 0) {
                System.out.println(deque.pollFirst());
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
  • 相关阅读:
    22.读写锁ReetrantReadWriteLock
    kafka---springboot
    流数据湖平台Apache Paimon(二)集成 Flink 引擎
    『Another Redis DeskTop Manager』用了这款Redis可视化工具,分析效率提升12倍
    基于javaweb的教务信息查询系统(java+ssm+bootstrap+c3p0+mysql)
    三、开发工具
    手机网络连接性能API接口:查询手机网络连接性能状态
    SpringBoot工程模板
    Springcloud----SkyWalking链路追踪
    基于Kubernetes v1.24.0的集群搭建(二)
  • 原文地址:https://blog.csdn.net/github_39655029/article/details/125947788