短消息功能模拟,java,数据结构

模拟短消息接收和有关操作,最多存储20条短消息,所编写的程序应包含且不限于如下功能:
(1)短消息接收,如果短消息总数超出20条,则删除最早的短消息;
(2)短列表显示所有短消息;
(3)阅读任意一条短消息;
(4)删除任意一条短消息;
(5)消除所有短消息;
(6)具有操作功能菜单。

该回答引用chatgpt:

img

package com.school;

import java.util.ArrayList;
import java.util.Scanner;

public class MessageSimulator {
    private static ArrayList<String> messages = new ArrayList<>();
    private static final int MAX_MESSAGES = 20;

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int choice;
        do {
            displayMenu();
            choice = scanner.nextInt();
            scanner.nextLine(); // 消耗换行符

            switch (choice) {
                case 1:
                    receiveMessage(scanner);
                    break;
                case 2:
                    displayMessages();
                    break;
                case 3:
                    readMessage(scanner);
                    break;
                case 4:
                    deleteMessage(scanner);
                    break;
                case 5:
                    clearMessages();
                    break;
                case 6:
                    System.out.println("程序已退出。");
                    break;
                default:
                    System.out.println("无效的选择,请重新输入。");
                    break;
            }
            System.out.println();
        } while (choice != 6);
    }

    private static void displayMenu() {
        System.out.println("请选择操作:");
        System.out.println("1. 接收短消息");
        System.out.println("2. 显示短消息列表");
        System.out.println("3. 阅读短消息");
        System.out.println("4. 删除短消息");
        System.out.println("5. 清空短消息列表");
        System.out.println("6. 退出程序");
        System.out.print("请输入选项:");
    }

    private static void receiveMessage(Scanner scanner) {
        System.out.print("请输入要接收的短消息内容:");
        String message = scanner.nextLine();

        if (messages.size() >= MAX_MESSAGES) {
            messages.remove(0); // 删除最早的短消息
        }
        messages.add(message);

        System.out.println("短消息接收成功!");
    }

    private static void displayMessages() {
        if (messages.isEmpty()) {
            System.out.println("短消息列表为空。");
        } else {
            System.out.println("短消息列表:");
            for (int i = 0; i < messages.size(); i++) {
                System.out.println((i + 1) + ". " + messages.get(i));
            }
        }
    }

    private static void readMessage(Scanner scanner) {
        if (messages.isEmpty()) {
            System.out.println("短消息列表为空。");
            return;
        }

        System.out.print("请输入要阅读的短消息的序号:");
        int index = scanner.nextInt();

        if (index < 1 || index > messages.size()) {
            System.out.println("无效的短消息序号。");
        } else {
            String message = messages.get(index - 1);
            System.out.println("阅读短消息:" + message);
        }
    }

    private static void deleteMessage(Scanner scanner) {
        if (messages.isEmpty()) {
            System.out.println("短消息列表为空。");
            return;
        }

        System.out.print("请输入要删除的短消息的序号:");
        int index = scanner.nextInt();

        if (index < 1 || index > messages.size()) {
            System.out.println("无效的短消息序号。");
        } else {
            String message = messages.remove(index - 1);
            System.out.println("删除短消息:" + message);
        }
    }

    private static void clearMessages() {
        messages.clear();
        System.out.println("短消息列表已清空。");
    }
}


你这个问题我不想给你解答 自己做一道不行吗?

666

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/373087
  • 这篇博客也不错, 你可以看下Java习题2:在一个类中实现中实现两个字符串数组的逆序排序、两个整形数组的交集、两个浮点型数组的并集等方法
  • 除此之外, 这篇博客: Java基础——分支结构和循环结构中的 1.分支结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。分支结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的分支语句。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 1.1 Java中的分支结构主要有if分支语句、if-else分支语句、if-else if()分支语句和switch-case分支语句这几种类型,下面为每一种分支结构的语法格式、执行流程以及部分具体案例。

    1.2 if分支语句

    语法格式:

    if(条件){
    
    语句体;
    
    }

    执行流程:

    条件的返回值必须是布尔类型的数据,如果条件为true,就会执行打括号里面的语句体;反之,如果条件为false,就不执行打括号里面的语句,直接执行后面的代码。

    1.3if-else分支语句

    语法格式:

    if(条件){
    
    语句体1;
    
    }else{
    
    语句体2;
    
    }

    执行流程:

    先判断条件,如果条件为true,执行语句体1中的代码,跳过后面else大括号里面的语句体2,往下执行;反之,如果条件为false的话,跳过if后面大括号里语句体1,去执行else打括号里面的语句体2,往下执行。

    1.4 if-else if()分支语句

    语法格式:

    if(条件1){
    
    语句体1;
    
    }else if(条件2){
    
    语句体2;
    
    }else{
    
    语句体3;
    
    }

    执行流程:

            如果条件1为true,则执行后面大括号中的语句体1,其他语句不执行;如果条件2为true,则执行后面大括号中的语句体2,其他语句不执行;如果条件1和条件2都不为true,则执行else后面大括号中的语句体3;只要遇到条件为true,就执行后面大括号中的语句体,跳过其他语句。

    1.5switch-case分支语句 

    语法格式:

    switch(表达式){
    
            case  常量1;
    
                    语句体1;
    
                    break;         
    
            case  常量2;
    
                    语句体2;
    
                    break;
    
            ......
    
            default:
    
                    语句体n;
    
                    break;
    
    }

    执行流程:

            先执行switch后面小括号中的表达式,将产生的值与下面的case常量匹配。如果匹配到对应的case常量,就执行后面的语句体。

    注意:

            switch-case中,常量的数据类型可以为byte 、short、int、char等数据类型,在jdk1.7以后String数据类型也可以作为常量,但是long、float、double和boolean这四种数据类型不可以作为常量。

    下面将用switch-case分支语句,以打印学生成绩等级为例 ,为大家掩饰一种分支结构的用法:

    案例

    int score = 55;    
    
    switch(score / 10){
    
      case 10:
    
            System.out.println("优秀");   
    
            break;  
    
    case 9:
    
            System.out.println("优秀");   
    
            break;
    
    case 8:
    
            System.out.println("良好");   
    
            break;
    
    case 7:
    
            System.out.println("一般");   
    
            break;
    
    case 6:
    
            System.out.println("及格");   
    
            break;
    
    default:
    
            System.out.println("不及格");   
    
            break;
    
    }
  • 您还可以看一下 马克老师的java大数据培训学校全套教程--类和对象课程中的 把过去找大数的作业改编成放在现在的类里(2)小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    我可以使用Java的ArrayList数据结构来实现这个功能。具体实现可以分为以下几个步骤:

    1.定义一个ArrayList用于存储短消息,最多存储20条。可以在程序的主函数中定义:

    ArrayList<String> messages = new ArrayList<String>(20);
    

    2.实现短消息的接收功能,并在短消息数量超出20条时删除最早的短消息。可以在主函数中使用Scanner类的nextLine()方法读取用户输入的短消息内容,并将其存储到ArrayList中:

    Scanner scanner = new Scanner(System.in);
    System.out.println("请输入短消息内容:");
    String message = scanner.nextLine();
    
    if (messages.size() == 20) {
        messages.remove(0); // 如果短消息数量超出20条,则删除最早的短消息
    }
    messages.add(message); // 将新的短消息存储到ArrayList中
    

    3.实现短列表显示所有20条短消息功能。可以使用一个for循环遍历ArrayList,将每条短消息依次输出:

    for (int i = 0; i < messages.size(); i++) {
        System.out.println(i + 1 + ". " + messages.get(i));
    }
    

    4.实现阅读任意一条短消息功能。可以使用Scanner类的nextInt()方法读取用户输入的短消息序号,并通过ArrayList的get()方法获取相应的短消息内容:

    System.out.println("请输入要阅读的短消息序号:");
    int index = scanner.nextInt();
    
    if (index >= 1 && index <= messages.size()) {
        String message = messages.get(index - 1);
        System.out.println("短消息内容:" + message);
    } else {
        System.out.println("输入的序号无效!");
    }
    

    5.实现删除任意一条短消息功能。可以使用Scanner类的nextInt()方法读取用户输入的短消息序号,并通过ArrayList的remove()方法删除相应的短消息:

    System.out.println("请输入要删除的短消息序号:");
    int index = scanner.nextInt();
    
    if (index >= 1 && index <= messages.size()) {
        messages.remove(index - 1);
        System.out.println("删除成功!");
    } else {
        System.out.println("输入的序号无效!");
    }
    

    6.实现清除所有短消息功能。可以使用ArrayList的clear()方法清空所有短消息:

    messages.clear();
    System.out.println("所有短消息已清除!");
    

    7.实现包含操作功能菜单。可以使用一个while循环不断显示菜单选项,并根据用户的选择执行相应的操作:

    while (true) {
        System.out.println("请选择要执行的操作:");
        System.out.println("1. 发送短消息");
        System.out.println("2. 显示所有短消息");
        System.out.println("3. 阅读短消息");
        System.out.println("4. 删除短消息");
        System.out.println("5. 清除所有短消息");
        System.out.println("6. 退出程序");
    
        int choice = scanner.nextInt();
    
        switch (choice) {
            case 1:
                // 发送短消息
                // ...
                break;
            case 2:
                // 显示所有短消息
                // ...
                break;
            case 3:
                // 阅读短消息
                // ...
                break;
            case 4:
                // 删除短消息
                // ...
                break;
            case 5:
                // 清除所有短消息
                // ...
                break;
            case 6:
                // 退出程序
                System.exit(0);
                break;
            default:
                System.out.println("输入的选项无效!");
                break;
        }
    }
    

    综上所述,以上这些步骤可以实现Java数据结构方面的短消息功能模拟问题。