模拟短消息接收和有关操作,最多存储20条短消息,所编写的程序应包含且不限于如下功能:
(1)短消息接收,如果短消息总数超出20条,则删除最早的短消息;
(2)短列表显示所有短消息;
(3)阅读任意一条短消息;
(4)删除任意一条短消息;
(5)消除所有短消息;
(6)具有操作功能菜单。
该回答引用chatgpt:
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
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的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数据结构方面的短消息功能模拟问题。