1、 Quiz类定义一个名为Quiz的类,管理最多25个Question对象。定义Quiz类的add方法,向测验添加问题。定义Quiz类的giveQuiz方法,依次向用户显示每个问题,接收每个问题的答案,并跟踪结果。在一个名为QuizTest类的中定义main方法,该方法填充测验、显示测验并打印最终结果。2、修改1中的Quiz类和Question类,考虑测验中给出的问题的复杂程度。重载giveQuiz方法,使其接收两个整数参数,用于指定测验问题最小复杂度和最大复杂度的级别,并仅允许在该复杂性范围内来回答问题。修改main方法以实现上述问题。
Question 这个类呢
把你的代码格式化一下,点击插入代码段就可以了。
import java.util.Scanner;
class QuizTest { public static void main(String[] args) {
Question question = new Question("测试一", "123");
// 添加问题
for (int i = 1; i <= 25; ++i) { System.out.print("问题" + i + ":");
Quiz.add(question); }
// 展示并回答问题
Quiz.giveQuiz();
// 获取答题结果
String result = Quiz.result();
// 输出答题结果 System.out.println(result); }}
public class Quiz {
// 使用index变量确保添加的问题数量不超过25个
private static Integer index = 0;
// 使用数组存储问题对象
private static Question[] questions = new Question[25];
// 添加问题 public static void add(Question question)
{ if (index == 25) { System.out.println("问题已达上限"); }
else { questions[index++] = question;
System.out.println("问题已添加到测试中"); } }
public static Question pop() { Question question = questions[index];
// 清除对象
questions[index] = null; System.out.println("问题已删除"); return question; }
// 依次显示并会回答问题
public static void giveQuiz() { Scanner scanner = new Scanner(System.in);
for (Question question: questions) { System.out.println(question.getContent()); question.setReply(scanner.next()); solve(question); } }
// 重载方法,添加问题的复杂度要求 public static void giveQuiz(Integer maxComplexity, Integer minComplexity) { Scanner scanner = new Scanner(System.in);
for (Question question: questions) { System.out.println(question.getContent()); question.setReply(scanner.next());
// 计算运行时间,得到复杂度
long startTime = System.currentTimeMillis();
solve(question); long endTime = System.currentTimeMillis(); long costTime = endTime - startTime; // 验证复杂度 if (costTime > minComplexity && costTime < maxComplexity) { question.setResult("不符合测验要求"); } } } // 验证答案是否正确,验证方法的复杂度。 private static void solve(Question question) { String answer = question.getAnswer(); String reply = question.getReply(); if (!answer.equals(reply)) { question.setResult(String.valueOf(false)); } else { question.setResult(String.valueOf(true)); } } // 输出结果 public static String result() { StringBuilder result = new StringBuilder(); for (Question question: questions) { result.append(question.toString() + "\n"); } return result.toString(); }}
// 问题类class Question {
// 问题内容 private String content;
// 问题答案 private String answer;
// 问题回答 private String reply;
// 问题结果 private String result;
// 构造方法 public Question(String content, String answer) {
this.content = content; this.answer = answer; }
// 构造方法
public Question(String content) { this.content = content; }
public String getContent()
{ return content; }
public void setContent(String content) { this.content = content; }
public String getAnswer() { return answer; }
public void setAnswer(String answer)
{ this.answer = answer; }
public String getReply()
{ return reply; }
public void setReply(String reply)
{ this.reply = reply; }
public String getResult() { return result; }
public void setResult(String result) { this.result = result; }
@Override public String toString() { return "Question{\n" + "\tcontent='" + content + '\'' + ",\n\t answer='" + answer + '\'' + ",\n\t reply='" + reply + '\'' + ",\n\t result='" + result + '\'' + "\n}"; }}
这个代码最后结果输出和预期不一样,我们希望做一个回答一个问题立马打印结果,每个问题不相同
求大佬改一下代码
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632