首页 > 解决方案 > 我应该添加什么来打印我在驱动程序课程中通过的所有问题?

问题描述

这些是我的测验和问题课。

class Question{
    String question, answer;
    Question()
    {
        question = null;
        answer = null;
    }
    
    public Question(String question, String answer)
    {
        this.question = question;
        this.answer = answer;
    }
    
    public String toString(){
        return question;
    }
}

class Quiz extends Question{
    String name;
    
    Quiz(String name)
    {
        super();
        this.name = name;
    }

    public void addQuestion(Question q)
    {
        answer = q.answer;
        question = q.question;
    }
    
    public String toString(){
        return name+"\n\n" + question;
    }
}

这是我的司机课。

public class QuizSample{
    public static void main(String[] args){
        Quiz sample = new Quiz("Sample 1903 Quiz");
        
        sample.addQuestion(new Question("Who is known as the father of Java?", "James Gosling"));
        sample.addQuestion(new Question("Write a statement that assigns the length of a string s to int i", "i = s.length();"));
        sample.addQuestion(new Question("True or false: assigning an int to double is an example of a widening conversion", "true"));
        
        System.out.println(sample);
    }
}

这是输出:

Sample 1903 Quiz
True or false: 将 int 分配给 double 是扩大转换的一个示例

但我想打印我通过的所有问题。 请帮助各位。

标签: javaobjecttostring

解决方案


Quiz不需要扩展Question,而是有一个问题集合(列表或集合)。

此外,toString方法需要更新为漂亮的打印问题。

import java.util.*;
import java.util.stream.*;

class Quiz {
    String name;
    List<Question> questions = new ArrayList<>();
    
    Quiz(String name) {
        this.name = name;
    }

    public void addQuestion(Question q) {
        questions.add(q);
    }
    
    public String toString() {
        return name+"\n\n" + questions.stream()
                                      .map(Question::toString)
                                      .collect(Collectors.joining("\n"));
    }
}

推荐阅读