IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> 编写一个简单的考试程序,在控制台完成出题、答题的交互。试题(Question)分为单选(SingleChoice)和多选( MultiChoice)两种。 -> 正文阅读

[游戏开发]编写一个简单的考试程序,在控制台完成出题、答题的交互。试题(Question)分为单选(SingleChoice)和多选( MultiChoice)两种。

编写一个简单的考试程序,在控制台完成出题、答题的交互。试题(Question)分为单选(SingleChoice)和多选( MultiChoice)两种。其中,单选题和多选题继承试题类,如下图所示。

要求:

1)在MultiChoice类中实现参数为( String text, String[] options, char[] answers) 的构造方法。在SingleChoice实现参数为( String text, String[] options ,char answer) 的构造方法。

2)在MutiChie和SingleChoice 类中重写Question类chek0方法,分别实现多选题的验证答案和单选题的验证答案方法。

3)设计测试类进行考试、答题。

例如,初始化如下试题:

new MultiQuestion("三国演义中的三绝是谁?",new String[]{"A.曹操","B.刘备","C.关羽","D.诸葛亮"},new char[]{'A','C',D''});

new SingleQuestion("最早向刘备推荐诸葛亮的是谁?",new String[]{"A.徐庶","B.司马微","C.鲁肃","D.关羽"},'B');

考试的运行效果如下:

三国演义中的三绝是谁?

A.曹操? ? ?B.刘备? ? ?C.关羽? ? ? D.诸葛亮

请选择:cad

恭喜,答对了!

最早向刘备推荐诸葛亮的是谁?

A.徐庶? ? ?B.司马微? ? C.鲁肃? ? D.关羽

请选择:A

还得努力

说明:

1)用户输入答案时,大小写均应支持。提示:可以利用Character. toUpperCase()方法将用户输入的答案字符转换为大写宇母后再进行比较(标准答案为大写字母)。

2)判断单选题正误时,如果用户未答题,或者选项多于1个均视为答错。

3)判断多选题正误时,如果用户未答题,选项多或者少于标准答案,或者选项错误均视为答错(多选题答案需要连续输入,选项之间不能有空格、回车等字符)。

4)多选题允许用户输入的答案次序与标准答案不同,即只要正确选择了所有选项即可。

提示:可以利用Arrays. binarySearch()方法在答案数组中查询是否存在用户的选项。

?

import java.util.Scanner;
import java.util.Arrays;

abstract class Question {
    String text;
    String[] options = new String[4];

    Question() {
    }

    Question(String text, String[] options) {
        this.text = text;
        this.options = options;
    }

    abstract boolean check(char[] answers);

    void print() {
        System.out.println(text);
        System.out.println(options[0] + " " + options[1] + " " + options[2] + " " + options[3]);
        System.out.println("请根据问题选择你认为正确的选项:");
    }
}

class SingleQuestion extends Question {
    char answer;

    SingleQuestion(String text, String[] options, char answer) {
        this.text = text;
        this.options = options;
        this.answer = answer;
    }

    boolean check(char[] answer) {
        if (answer.length == 1) {
            if (Character.toUpperCase(answer[0]) == this.answer)
                return true;
            else
                return false;
        } else
            return false;
    }
}

class MultiQuestion extends Question {
    char[] answer = new char[4];

    MultiQuestion(String text, String[] options, char[] answer) {
        this.text = text;
        this.options = options;
        this.answer = answer;
    }

    boolean check(char[] answer) {
        int count = 0;
        for (int i = 0; i < answer.length; i++) {
            int x = Arrays.binarySearch(this.answer, Character.toUpperCase(answer[i]));
            if (x < 0)
                return false;
            else
                count++;
        }
        if (count == 3)
            return true;
        else
            return false;
    }
}



public class Test{
    public static void main(String[] args) {
        SingleQuestion s = new SingleQuestion("最早向刘备推荐诸葛亮的是谁?", new String[] { "A.徐庶", "B.司马微", "C.鲁肃", "D.关羽" }, 'A');
        MultiQuestion m = new MultiQuestion("三国演义中的三绝是谁?", new String[] { "A.曹操", "B.刘备", "C.关羽", "D.诸葛亮" }, new char[] { 'A', 'C', 'D' });
        m.print();
        Scanner sc1 = new Scanner(System.in);
        String t1 = null;
        t1 = sc1.nextLine();
        char[] a = t1.toCharArray();
        if (m.check(a))
        
            System.out.println("恭喜,答对了!");
        else
            System.out.println("还得努力!");
        s.print();
        Scanner sc2 = new Scanner(System.in);
        String t2 = null;
        t2 = sc2.nextLine();
        char[] b = t2.toCharArray();
        if (s.check(b))
            System.out.println("恭喜,答对了!");
        else
            System.out.println("还得努力!");
    }
}

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-04-23 11:07:26  更:2022-04-23 11:07:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:45:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码