这段 Java 代码是一个简单的命令行菜单程序,用于模拟一个帖子的交流和评论。程序提供了不同的菜单选项,如提问、回答、点赞、打分和查看评论等,用户可以根据自己的身份(老师、学生或潜水者)选择相应的菜单选项进行操作。程序还包含了异常处理和输入验证功能,以确保用户输入的数据是有效和合法的。

程序主要功能如下:

  1. 主菜单: 用户可以选择身份,包括老师、学生和潜水者。
  2. 老师菜单: 老师可以回答问题、点赞、打分、查看评论,并返回上一级菜单。
  3. 学生菜单: 学生可以提出问题、点赞、打分、查看评论,并返回上一级菜单。
  4. 潜水者菜单: 潜水者可以查看评论、评论、点赞,并返回上一级菜单。
  5. 问问题: 学生可以提出新的问题。
  6. 回答问题: 老师可以对问题进行回答。
  7. 点赞: 用户可以对评论进行点赞。
  8. 打分: 老师可以对回答进行打分。
  9. 查看评论: 用户可以查看所有评论。

代码使用了 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 代码实现了一个简单的帖子评论系统,为不同的用户角色提供了不同的功能,并使用异常处理和输入验证功能,保证程序的稳定性和可靠性。

Java 命令行帖子评论系统:模拟教师、学生和潜水者互动

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

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