在java中实现的测验程序

时间:2016-08-24 15:12:52

标签: java nullpointerexception java-8

我正在编写一个程序来实施"测验"在Java 8中

import java.util.Scanner;
import java.util.*;

class Question {
    String question;
    int no;
    HashMap<Integer, String> options;
    String correctanswer;

    public static void q_no() {
        System.out.println("enter a question no");
        int num;
        Scanner no = new Scanner(System.in);
        num = no.nextInt();
    }

    public static void set_question(){
        System.out.println("enter aquestion");
        Scanner f = new Scanner(System.in);
        String question = f.nextLine();

    }

在设置选项时,我在实施程序时遇到while循环错误。"runtime errors thrown as NullPointerExceptions"

    public void set_options() {
        System.out.println("enter options");
        int count = 1;
        String q;
        Scanner str = new Scanner(System.in);
        while (count < 5) {
            System.out.print("set option" + count);
            q = str.nextLine();
            options.put(count, q);
            count++;
        }
    }

    public void set_correctanswer() {
        System.out.println("enter correct answer");
        Scanner d = new Scanner(System.in);
        String ans = d.nextLine();
    }

    public static void marks() {

    }          

}

在这里,您可以将问题写入ArrayList并在第二个问题中显示。

class Quiz {
    ArrayList<Question> list = new ArrayList<>();
    public ArrayList<Question> adding(Question q){
        list.add(q);
        return list;
    }
    public void show() {
        int g = list.size();
        int count = 0;
        while (count < g) {
            list.get(count);
        }
    }
}

在菜单中,如果您选择1,则可以添加问题或输入2,您可以获得问题列表。我还在努力打印问题。

class Menu {
    public static void main(String[] args) {
        System.out.println("enter 1 for adding questions");
        Scanner input = new Scanner(System.in);
        int g;
        g = input.nextInt();
        if (g == 1) {
            System.out.println("how many questions do you add");
            int number;
            Scanner b = new Scanner(System.in);
            Quiz programming = new Quiz();
            number = b.nextInt();
            int count = 0;
            while (count < number) {
                Question q1 = new Question();
                q1.q_no();
                q1.set_question();
                q1.set_options();
                q1.set_correctanswer();
                programming.adding(q1);
            }

        } else if(g == 2){
            Quiz programming = new Quiz();
            programming.show();
        }

    }
} 

1 个答案:

答案 0 :(得分:0)

这是一个糟糕的实现。

您需要System.out次来与Question课程内的用户进行互动。

更好的想法是将用户操作移到驱动程序类中。

您不遵循Java编码标准或JavaBean标准。你肯定会对两者感到悲痛。应该是setCorrectanswer(),而不是set_correctanswer()