Java 命令行帖子评论系统:模拟教师、学生和潜水者互动
这段 Java 代码是一个简单的命令行菜单程序,用于模拟一个帖子的交流和评论。程序提供了不同的菜单选项,如提问、回答、点赞、打分和查看评论等,用户可以根据自己的身份(老师、学生或潜水者)选择相应的菜单选项进行操作。程序还包含了异常处理和输入验证功能,以确保用户输入的数据是有效和合法的。
程序主要功能如下:
- 主菜单: 用户可以选择身份,包括老师、学生和潜水者。
- 老师菜单: 老师可以回答问题、点赞、打分、查看评论,并返回上一级菜单。
- 学生菜单: 学生可以提出问题、点赞、打分、查看评论,并返回上一级菜单。
- 潜水者菜单: 潜水者可以查看评论、评论、点赞,并返回上一级菜单。
- 问问题: 学生可以提出新的问题。
- 回答问题: 老师可以对问题进行回答。
- 点赞: 用户可以对评论进行点赞。
- 打分: 老师可以对回答进行打分。
- 查看评论: 用户可以查看所有评论。
代码使用了 Scanner 类获取用户输入,并使用 ArrayList 存储评论。程序还使用 switch 语句实现菜单选项的处理,并使用 try-catch 块进行异常处理。
代码示例:
package ClassDemonstration0329;
import java.lang.Throwable;
import java.util.ArrayList;
import java.util.InputMismatchException;
import java.util.Scanner;
import java.util.InputMismatchException;
public class Menu {
Scanner scanner = new Scanner(System.in);
ArrayList<Talk> arrayList = new ArrayList<>();
String choice;
private String question;
private Ask ask1 = new Ask(); //变量ask
private Answer answer1 = new Answer();
private int i=0,j=0;
public void mainMenu(){
System.out.println('请输入这个帖子的第一个问题:');
ask1.setWords(scanner.next());
arrayList.add(ask1);
System.out.println('请选择你加入贴吧的身份');
do{
System.out.println('1.教师:');
System.out.println('2.学生:');
System.out.println('3.潜水者:');
System.out.println('4.退出评论');
try {
choice = scanner.next();
if (choice.matches('.*[a-zA-Z]+.*')) { //使用正则表达式检测是否输入字母
throw new LetterInputException('Input contains letters'); //抛出错误的信息
}
System.out.println('Input is valid: ' + choice);
} catch (LetterInputException e) {
System.out.println('Error: ' + e.getMessage());
}finally {
System.out.println('正确数字的范围是1——4'); //提示输入的数字范围
}
switch(choice){
case '1':
TeacherMenu();
break;
case '2':
StuMenu();
break;
case '3':
DiverMenu();
break;
default:
break;
}
}while(!choice.equals('4'));
}
//老师
public void TeacherMenu(){
do{
System.out.println('1.回答问题');
System.out.println('2.点赞');
System.out.println('3.打分');
System.out.println('4.查看评论');
System.out.println('5.返回上一级');
try {
choice = scanner.next();
if (choice.matches('.*[a-zA-Z]+.*')) { //使用正则表达式检测是否输入字母
throw new LetterInputException('Input contains letters'); //抛出错误的信息
}
System.out.println('Input is valid: ' + choice);
} catch (LetterInputException e) {
System.out.println('Error: ' + e.getMessage());
}finally {
System.out.println('正确数字的范围是1——4'); //提示输入的数字范围
}
switch(choice){
case '1':
answerMenu();
break;
case '2':
likeMenu();
break;
case '3':
scoreMenu();
break;
case '4':
viewMenu();
break;
default:
break;
}
}while(!choice.equals('5'));
}
//学生
public void StuMenu(){
do{
System.out.println('1.提出问题');
System.out.println('2.点赞');
System.out.println('3.打分');
System.out.println('4.查看评论');
System.out.println('5.返回上一级');
try {
choice = scanner.next();
if (choice.matches('.*[a-zA-Z]+.*')) { //使用正则表达式检测是否输入字母
throw new LetterInputException('Input contains letters'); //抛出错误的信息
}
System.out.println('Input is valid: ' + choice);
} catch (LetterInputException e) {
System.out.println('Error: ' + e.getMessage());
}finally {
System.out.println('正确数字的范围是1——4'); //提示输入的数字范围
}
switch(choice){
case '1':
askMenu();
break;
case '2':
likeMenu();
break;
case '3':
scoreMenu();
break;
case '4':
viewMenu();
break;
default:
break;
}
}while(!choice.equals('5'));
}
//潜水者
public void DiverMenu(){
do{
System.out.println('1.查看评论');
System.out.println('2.评论');
System.out.println('3.点赞');
System.out.println('4.返回上一级');
try {
choice = scanner.next();
if (choice.matches('.*[a-zA-Z]+.*')) { //使用正则表达式检测是否输入字母
throw new LetterInputException('Input contains letters'); //抛出错误的信息
}
System.out.println('Input is valid: ' + choice); //提示输入是无效的
} catch (LetterInputException e) {
System.out.println('Error: ' + e.getMessage());
}finally {
System.out.println('正确数字的范围是1——4'); //提示输入的数字范围
}
switch(choice){
case '1':
viewMenu();
break;
case '2':
commentMenu();
break;
case '3':
likeMenu();
break;
default:
break;
}
}while(!choice.equals('4'));
}
//问问题
public void askMenu(){
Stu stu1 = new Stu('1号学生');
stu1.comment();
ask1.setWords(scanner.next());
arrayList.add(ask1);
}
//回答问题
public void answerMenu(){
Teacher teacher1 = new Teacher('1号老师');
teacher1.comment();
answer1.setWords(scanner.next());
arrayList.add(answer1);
}
//点赞
public void likeMenu(){
viewMenu();
System.out.println('请输入您要点赞评论:');
String question = scanner.next();
if(question.equals(answer1)){ //
answer1.setLike(i++);
}
if(question.equals(ask1)){
ask1.setLike(j++);
}
}
//查看评论
public void viewMenu(){
for (Talk talk1:arrayList) {
System.out.println(talk1);
}
}
//打分
public void scoreMenu(){
System.out.println('请输入您的打分:');
}
//评论
public void commentMenu(){
}
}
总结: 这段 Java 代码实现了一个简单的帖子评论系统,为不同的用户角色提供了不同的功能,并使用异常处理和输入验证功能,保证程序的稳定性和可靠性。
原文地址: https://www.cveoy.top/t/topic/jLVS 著作权归作者所有。请勿转载和采集!