JavaSE练习

这篇博客探讨了如何在Java中找到数组中的多数元素,并通过一系列的编程练习介绍了抽象类的概念。首先,解释了如何找到数组中出现次数大于n/2的元素。接着,详细阐述了一个综合案例,涉及抽象类`Role`及其派生类`Employee`和`Manager`的设计,讲解了`this`和`super`关键字的使用。最后,介绍了一个关于饮料的抽象类`Drink`及其子类,展示了如何使用静态工厂方法创建对象,并处理异常`DrinkNotFoundException`。整个博客注重多态性和代码规范的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

给定一个大小为 n 的数组 nums ,返回其中的多数元素。
多数元素是指在数组中出现次数 大于 n/2 的元素。

arr = {1, 2, 1, 1, 2, 2, 1, 3, 1, 1};
public class Demo01 {
    public static void main(String[] args) {
        int[] arr = {1, 2, 1, 1, 2, 2, 1, 3, 1, 1};
        Arrays.sort(arr);
        if (arr.length >= 3) {
            int num = arr[arr.length / 2];
            System.out.println("该数组的多数元素为:" + num);
        } else {
            System.out.println("没有多数元素");
        }
    }
}

在这里插入图片描述

综合案例(用户博客管理系统):

package org.oracle.system;
//用户属性
public class User{
    private int id;
    private String userName;
    private String password;
    private int age;
    private String gender;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public User() {
    }

    public User(int id, String userName, String password, int age, String gender) {
        this.id = id;
        this.userName = userName;
        this.password = password;
        this.age = age;
        this.gender = gender;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", userName='" + userName + '\'' +
                ", password='" + password + '\'' +
                ", age=" + age +
                ", gender='" + gender + '\'' + '}';
    }
}

package org.oracle.system;

import java.util.Date;
//文章属性
public class Article {
    private String title;
    private String content;
    private User user;
    private Date publishTime;
    private Date modifyTime;

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public User getAuthor() {
        return user;
    }

    public void setAuthor(User user) {
        this.user = user;
    }

    public Date getPublishTime() {
        return publishTime;
    }

    public void setPublishTime(Date publishTime) {
        this.publishTime = publishTime;
    }

    public Date getModifyTime() {
        return modifyTime;
    }

    public void setModifyTime(Date modifyTime) {
        this.modifyTime = modifyTime;
    }

    public Article() {

    }

    public Article(User user){
        this.user = user;
    }

    public Article(String title, String content, User user, Date publishTime) {
        super();
        this.title = title;
        this.content = content;
        this.user = user;
        this.publishTime = publishTime;
    }

    public Article(String title, String content, User user, Date publishTime, Date modifyTime) {
        super();
        this.title = title;
        this.content = content;
        this.user = user;
        this.publishTime = publishTime;
        this.modifyTime = modifyTime;
    }

    @Override
    public String toString() {
        return "Article [title=" + title + ", content=" + content + ", author=" + user + ", publishTime="
                + publishTime + ", modifyTime=" + modifyTime + "]";
    }
}

package org.oracle.system;

import java.util.ArrayList;
import java.util.Scanner;
//用户注册
public class Register {
    private User user;
    static ArrayList<User> arrayList = new ArrayList<>();
    private Scanner sc = new Scanner(System.in);

    public void add(User user){
        arrayList.add(user);
    }

    public ArrayList<User> findAll() {
        return arrayList;
    }

    public User findById(int id) {
        User us = null;
        for (User u : arrayList) {
            if (u.getId() == id) {
                us = u;
                break;
            }
        }
        return us;
    }
}
package org.oracle.system;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Scanner;
//文章操作
public class ArticleActions {
    private User user;
    static ArrayList<Article> list = new ArrayList<>();
    Scanner sc = new Scanner(System.in);

    public ArticleActions(User user){
        this.user = user;
    }

    //写文章
    public void write() {
        System.out.println("请输入标题:");
        String title = sc.next();
        if (isExists(title)){
            System.out.println("已存在该文章,请重新输入!!");
            write();
        }else {
            System.out.println("请输入内容:");
            String content = sc.next();
            if (!content.equals("")){
                System.out.print("发布时间为:");
                Date publishTime = new Date();
                SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
                System.out.println(formatter.format(publishTime));
                Article article = new Article(title, content, user, publishTime);
                list.add(article);
                display(title);
            }
        }
    }
    //修改文章
    public void revise() {
        System.out.println("请输入您要修改的文章标题:");
        String title = sc.next();
        if (isExists(title)){
            for (Article article : list) {
                if (title.equals(article.getTitle())) {
                    System.out.println("请输入修改后的标题:");
                    article.setTitle(sc.next());
                    System.out.println("请修改内容:");
                    article.setContent(sc.next());
                    System.out.print("修改时间为:");
                    Date modifyTime = new Date();
                    SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
                    System.out.println(formatter.format(modifyTime));
                    article.setModifyTime(modifyTime);
                    display(article.getTitle());
                }
            }

        }else {
            System.out.println("不存在该文章,请重新输入标题");
            revise();
        }
    }
    //删除文章
    public void removeArticle(){
        System.out.println("请输入您要删除的文章的标题:");
        String title = sc.next();
        if (isExists(title)){
            for (Article article : list) {
                if (title.equals(article.getTitle())) {
                    if (list.remove(article)){
                        System.out.println("删除成功!!!");
                        break;
                    }else {
                        System.out.println("删除失败!!!");
                        break;
                    }
                }
            }
        }else {
            System.out.println("不存在该文章,请重新输入标题");
            removeArticle();
        }
    }

    //查看文章
    public void checkArticle(){
        if (!list.isEmpty()){
            for (Article article : list){
                System.out.println(article);
            }
        }else {
            System.out.println("您还没有写过文章!");
        }

    }

    //是否存在文章
    public boolean isExists(String name) {
        int n = 0;
        for (Article article : list) {
            if (name.equals(article.getTitle())) {
                n++;
            }
        }
        if (n != 0) {
            return true;
        }
        return false;
    }

    //展示文章
    public void display(String title){
        if (isExists(title)){
            for (Article article : list) {
                if (title.equals(article.getTitle())) {
                    System.out.println("标题:" + title);
                    System.out.println("作者:" + article.getAuthor().getUserName());
                    System.out.println("内容:" + article.getContent());
                    SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
                    System.out.println("发布时间:" + formatter.format(article.getPublishTime()));
                    if (article.getModifyTime() != null){
                        System.out.println("修改时间:" + formatter.format(article.getModifyTime()));
                    }else {
                        System.out.println("修改时间:" + null);
                    }

                }
            }
        }else {
            System.out.println("不存在该文章");
        }
    }
}
package org.oracle.system;

import java.util.Scanner;

import static org.oracle.system.Register.arrayList;
//测试
public class Test {
    static Scanner sc = new Scanner(System.in);

    public static void main(String[] args){
        boolean b = true;
        while (b){
            System.out.println("请选择1(注册)、2(登录)、3(退出):");
            int choice = sc.nextInt();
            switch (choice){
                case 1:
                    register();
                    break;
                case 2:
                    login();
                    break;
                case 3:
                    System.out.println("退出");
                    b = false;
                    break;
                default:
                    System.out.println("请重新选择!!!");
            }
        }
    }
    //注册
    public static void register(){
        Register register = new Register();
        System.out.println("---注册---");
        System.out.println("请输入姓名:");
        String userName = sc.next();
        if (isExists(userName)){
            System.out.println("已存在该用户,请重新输入信息!!");
            register();
        }else {
            System.out.println("请输入id:");
            int userId = sc.nextInt();
            System.out.println("请输入密码:");
            String password = sc.next();
            System.out.println("请输入年龄:");
            int age = sc.nextInt();
            System.out.println("请输入性别:");
            String gender = sc.next();
            User user = new User(userId, userName, password, age, gender);
            System.out.println("注册成功!!");
            register.add(user);
        }



    }
    //登录
    public static void login(){
        System.out.println("---登录---");
        System.out.println("请输入用户名:");
        String name = sc.next();
        if (isExists(name) && !arrayList.isEmpty()){
            System.out.println("请输入密码:");
            String pwd = sc.next();
            for (User u : arrayList) {
                if (name.equals(u.getUserName()) && pwd.equals(u.getPassword())) {
                    System.out.println("登录成功!!");
                    articleView(u);
                    break;
                }else {
                    System.out.println("登陆失败,请重新登录!!");
                    login();
                }
            }
        }else {
            System.out.println("用户不存在,请重新登录!!");
            login();
        }
    }

    //是否存在用户
    public static boolean isExists(String name) {
        int n = 0;
        for (User u : arrayList) {
            if (name.equals(u.getUserName())) {
                n++;
            }
        }
        if (n != 0) {
            return true;
        }
        return false;
    }

    //文章界面
    public static void articleView(User user){
        Article article = new Article(user);
        ArticleActions aa = new ArticleActions(user);
        System.out.println("欢迎进入博客!!!");
        boolean b = true;
        while(b){
            System.out.println("1 : 写文章");
            System.out.println("2 : 修改文章");
            System.out.println("3 : 删除文章");
            System.out.println("4 : 查看文章");
            System.out.println("5 : 退出");
            System.out.println("请输入序号:");
            int num = sc.nextInt();
            switch (num){
                case 1:
                    aa.write();
                    break;
                case 2:
                    aa.revise();
                    break;
                case 3:
                    aa.removeArticle();
                    break;
                case 4:
                    aa.checkArticle();
                    break;
                case 5:
                    System.out.println("退出");
                    b = false;
                    break;
                default:
                    System.out.println("请输入1~5的序号!!");
                    articleView(user);
            }

        }
    }

}

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

Team8(抽象类)
定义一个抽象的"Role"类 有姓名 年龄 性别等成员变量
1. 要求尽可能隐藏所有变量(能够私有就私有,能够保护就不要公有)
再通过GetXXX()和SetXXX()方法对各变量进行读写。具有一个抽象的play()方法
该方法不返回任何值 同时至少定义两个构造方法。Role类中要体现出this的几种用法。
2. 从Role类派生出一个"Employee"类 该类具有Role类的所有成员
构造方法除外 并扩展 salary成员变量 同时增加一个静态成员变量“职工编号 ID ”。
同样要有至少两个构造方法 要体现出this和super的几种用法
还要求覆盖play()方法 并提供一个final sing()方法。
3. “Manager"类继承"Employee"类 有一个final成员变量"vehicle”
4. 在main()方法中制造Manager和Employee对象,并测试这些对象的方法

public class Test01 {
    public static void main(String[] args) {
        Employee employee = new Employee("张三", 33, "男", 10001);
        employee.setSalary(5000);
        employee.play();
        employee.sing();

        Manager manager = new Manager("李四", 25, "男", 10002, 8000.0);
        manager.play();
        System.out.println("我有一辆" + manager.getVEHICLE());

    }
}

在这里插入图片描述

Team9(抽象类)
品尝饮料
1、建立一个Java抽象类Drink 应当
a、声明一个抽象方法taste() 该方法负责输出饮料的味道
b、声明int型常量来代表不同的饮料类型 如:咖啡、啤酒、牛奶
c、声明静态工厂方法getDrink(int drinkType) 根据传入的参数创建不同的饮料对象 并返回该对象 建议使用switch语句。该方法要求声明DrinkNotFoundException 当没有相对应的饮料类型时 抛出该异常。
2、建立Drink的具体子类
a、分别建立Drink的子类 Coffee 代表咖啡 Beer 代表啤酒 Milk 代表牛奶 ; b、实现taste()方法 要求在控制台打印各自的味道特征。
3、建立异常类DrinkNotFoundException
a、继承Exception
b、在Drink的 方 法getDrink(int drinkType)中 声 明 引 发DrinkNotFoundException异常 当传入的参数没有相对应的饮料类型时 抛出异常。
c、在使用getDrink方法的类中捕捉该异常。
4、建立Test测试类 测试以上内容的正确性
a、编写main方法 通过命令行传参的方式传入某种饮料的类型。
b、在main方法中 调用Drink类的getDrink方法 获得相应的饮料对象。注意捕获DrinkNotFoundException。
c、然后调用该饮料对象的taste()方法 输出该饮料的味道。
5、编译程序 并运行。
注意事项 1、仔细审题 把题目要求理解准确 2、请注意多态性的运用 3、请注意代码的书写、命名符合规范 应有适当的注释

public abstract class Drink {

    int Coffee, Beer, Milk;

    public abstract void taste();

    public static int getDrink(int drinkType) throws DrinkNotFoundException {
        switch (drinkType){
            case 1:
                System.out.println("咖啡:");
                Coffee coffee = new Coffee();
                coffee.taste();
                break;
            case 2:
                System.out.println("啤酒");
                Beer beer = new Beer();
                beer.taste();
                break;
            case 3:
                System.out.println("牛奶");
                Milk milk = new Milk();
                milk.taste();
                break;
            default:
                throw new DrinkNotFoundException();
        }
        return drinkType;
    }
}
public class Coffee extends Drink{
    @Override
    public void taste() {
        System.out.println("苦的");
    }
}

public class Beer extends Drink{
    @Override
    public void taste() {
        System.out.println("一股酒味儿");
    }
}

public class Milk extends Drink{
    @Override
    public void taste() {
        System.out.println("奶香味");
    }
}
public class DrinkNotFoundException extends Exception{
    private static final long serialVersionUID = 1L;
}

import java.util.Scanner;

public class Test02 {
    public static void main(String[] args) throws DrinkNotFoundException{
        Scanner sc =new Scanner(System.in);
        System.out.println("请输入1(咖啡),2(啤酒),3(牛奶):");
        try {
            int num = sc.nextInt();
            Drink.getDrink(num);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值