Java 短消息接收器实现:使用数组和 ArrayList 实现短信存储和操作

本文将介绍使用 Java 语言实现一个简单的短消息接收器,支持接收、存储、显示、读取、删除和清空短信。我们将提供两种实现方法:使用数组和 ArrayList。

1. 使用数组实现

import java.util.Scanner;

public class MessageReceiver {
    private static final int MAX_MESSAGES = 20;
    private String[] messages;
    private int count;

    public MessageReceiver() {
        messages = new String[MAX_MESSAGES];
        count = 0;
    }

    public void receiveMessage(String message) {
        if (count == MAX_MESSAGES) {
            deleteOldestMessage();
        }
        messages[count] = message;
        count++;
    }

    public void deleteOldestMessage() {
        for (int i = 0; i < count - 1; i++) {
            messages[i] = messages[i + 1];
        }
        count--;
    }

    public void displayMessages() {
        if (count == 0) {
            System.out.println('No messages');
        } else {
            for (int i = 0; i < count; i++) {
                System.out.println('Message ' + (i + 1) + ': ' + messages[i]);
            }
        }
    }

    public void readMessage(int index) {
        if (index >= 1 && index <= count) {
            System.out.println('Message ' + index + ': ' + messages[index - 1]);
        } else {
            System.out.println('Invalid message index');
        }
    }

    public void deleteMessage(int index) {
        if (index >= 1 && index <= count) {
            for (int i = index - 1; i < count - 1; i++) {
                messages[i] = messages[i + 1];
            }
            count--;
            System.out.println('Message ' + index + ' deleted');
        } else {
            System.out.println('Invalid message index');
        }
    }

    public void deleteAllMessages() {
        count = 0;
        System.out.println('All messages deleted');
    }

    public void displayMenu() {
        System.out.println('1. Receive message');
        System.out.println('2. Display messages');
        System.out.println('3. Read message');
        System.out.println('4. Delete message');
        System.out.println('5. Delete all messages');
        System.out.println('6. Exit');
    }

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

        int choice = 0;
        while (choice != 6) {
            messageReceiver.displayMenu();
            System.out.print('Enter your choice: ');
            choice = scanner.nextInt();

            switch (choice) {
                case 1:
                    System.out.print('Enter the message: ');
                    scanner.nextLine(); // consume the newline character
                    String message = scanner.nextLine();
                    messageReceiver.receiveMessage(message);
                    System.out.println('Message received');
                    break;
                case 2:
                    messageReceiver.displayMessages();
                    break;
                case 3:
                    System.out.print('Enter the message index: ');
                    int index = scanner.nextInt();
                    messageReceiver.readMessage(index);
                    break;
                case 4:
                    System.out.print('Enter the message index: ');
                    index = scanner.nextInt();
                    messageReceiver.deleteMessage(index);
                    break;
                case 5:
                    messageReceiver.deleteAllMessages();
                    break;
                case 6:
                    System.out.println('Exiting...');
                    break;
                default:
                    System.out.println('Invalid choice');
                    break;
            }
        }

        scanner.close();
    }
}

2. 使用 ArrayList 实现

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

public class MessageReceiver {
    private static final int MAX_MESSAGES = 20;
    private ArrayList<String> messages;

    public MessageReceiver() {
        messages = new ArrayList<>();
    }

    public void receiveMessage(String message) {
        if (messages.size() == MAX_MESSAGES) {
            deleteOldestMessage();
        }
        messages.add(message);
    }

    public void deleteOldestMessage() {
        messages.remove(0);
    }

    public void displayMessages() {
        if (messages.isEmpty()) {
            System.out.println('No messages');
        } else {
            for (int i = 0; i < messages.size(); i++) {
                System.out.println('Message ' + (i + 1) + ': ' + messages.get(i));
            }
        }
    }

    public void readMessage(int index) {
        if (index >= 1 && index <= messages.size()) {
            System.out.println('Message ' + index + ': ' + messages.get(index - 1));
        } else {
            System.out.println('Invalid message index');
        }
    }

    public void deleteMessage(int index) {
        if (index >= 1 && index <= messages.size()) {
            messages.remove(index - 1);
            System.out.println('Message ' + index + ' deleted');
        } else {
            System.out.println('Invalid message index');
        }
    }

    public void deleteAllMessages() {
        messages.clear();
        System.out.println('All messages deleted');
    }

    public void displayMenu() {
        System.out.println('1. Receive message');
        System.out.println('2. Display messages');
        System.out.println('3. Read message');
        System.out.println('4. Delete message');
        System.out.println('5. Delete all messages');
        System.out.println('6. Exit');
    }

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

        int choice = 0;
        while (choice != 6) {
            messageReceiver.displayMenu();
            System.out.print('Enter your choice: ');
            choice = scanner.nextInt();

            switch (choice) {
                case 1:
                    System.out.print('Enter the message: ');
                    scanner.nextLine(); // consume the newline character
                    String message = scanner.nextLine();
                    messageReceiver.receiveMessage(message);
                    System.out.println('Message received');
                    break;
                case 2:
                    messageReceiver.displayMessages();
                    break;
                case 3:
                    System.out.print('Enter the message index: ');
                    int index = scanner.nextInt();
                    messageReceiver.readMessage(index);
                    break;
                case 4:
                    System.out.print('Enter the message index: ');
                    index = scanner.nextInt();
                    messageReceiver.deleteMessage(index);
                    break;
                case 5:
                    messageReceiver.deleteAllMessages();
                    break;
                case 6:
                    System.out.println('Exiting...');
                    break;
                default:
                    System.out.println('Invalid choice');
                    break;
            }
        }

        scanner.close();
    }
}

这两种方法都实现了基本的短消息接收器功能,选择哪种方法取决于你的具体需求和偏好。数组实现更简单,但需要预先分配固定大小的数组,如果消息数量超过数组容量,需要重新分配数组大小,比较麻烦。ArrayList 更加灵活,可以动态扩展大小,但可能会消耗更多内存。

扩展功能

你可以根据需要扩展这个短消息接收器,例如添加以下功能:

  • 短信发送功能
  • 短信分类功能
  • 短信搜索功能
  • 短信保存到文件或数据库
  • 支持不同的短信格式
  • 添加用户界面

希望本文能帮助你了解如何使用 Java 实现简单的短消息接收器。如果你有任何问题,请随时在评论区留言。

Java 短消息接收器实现:使用数组和 ArrayList 实现短信存储和操作

原文地址: https://www.cveoy.top/t/topic/psbM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录