1

我搜索并发现了一些似乎没有帮助的响应,并且我遇到了 nullPointerException 错误。下面是我的代码,错误出现在我的 logResponse() 方法中,非常感谢任何帮助。

import java.util.*;

public class Survey21 {

    private Scanner in = new Scanner(System.in);
    private String surveyTitle;
    private static int rID;
    private static int respondentID;
    private int[][] responses;

    //Constructors
    // Default Constructor
    Survey21() {
        surveyTitle = "Customer Survey";
    }

    // Overloaded Constructor 1
    Survey21(String title, int rID) {
        surveyTitle = title;
        rID = 0;
        generateRespondentId();
    }

    Survey21(int[][] surveyArray) {
        responses = surveyArray; // store responses
    }

    public static int getrID() {
        return rID;
    }

    public static void setRespondentID(int respondentID) {
        respondentID = rID;

    }

    public String getTitle() {
        return surveyTitle;
    }

    public void setTitle(String title) {
        surveyTitle = title;
    }

    public static int generateRespondentId() {
        rID = ++respondentID;
        return rID;
    }

    // displays name of survey and entire grid of results
    public void displaySurveyResults() {
        System.out.printf("%s\n\n", getTitle());
        logResponse();


    }

    // dispalys question number and results for that question so far
    public void displayQuestionStats(int questionNumber) {
    }

    // enter questions and store in an array of Strings
    public void enterQuestions() {
        /*String[] questions = {
         "How would you rate your online shopping experience?",
         "How satisfied was you with the purchase price?",
         "Overall how was the online checkout experience?",
         "How likely are you to recommend your friends and family to our store?",
         "How concerned are you with online credit card security?",
         "How likely are you to prefer a retail location compared to an online store?",
         };*/
        String questions[] = new String[10];

        for (int i = 0; i < questions.length; i++) {
            System.out.println("Please enter a question!");
            questions[i] = in.nextLine();
        }
        /*TEST TEST***
         System.out.print(questions[0] + "\n");
         System.out.print(questions[1] + "\n");
         System.out.print(questions[2] + "\n");
         System.out.print(questions[3] + "\n");
         System.out.print(questions[4] + "\n");
         System.out.print(questions[5] + "\n");
         System.out.print(questions[6] + "\n");
         System.out.print(questions[7] + "\n");
         System.out.print(questions[8] + "\n");
         System.out.print(questions[9] + "\n");
         */

    }

    **// enters the response in the correct grid 
    public void logResponse() {
        System.out.println("The responses are:\n");
        System.out.print("            "); // align column heads
        // create a column heading for each question
        for (int qNumber = 0; qNumber < responses[0].length; qNumber++) {
            System.out.printf("Question number %d ", qNumber + 1);
            System.out.println("Response"); // column heading 
        }
        for (int response = 0; response < responses.length; response++) {
            System.out.printf("Response %2d", response + 1);
            for (int qNumber : responses[response])// output responses
            {
                System.out.printf("%8d", qNumber);
            }
        }
    }**
}
4

2 回答 2

2

Probably you want the length of your array and not the length of your first element:

for (int qNumber = 0; qNumber < responses.length; qNumber++) {
    System.out.printf("Question number %d ", qNumber + 1);
    System.out.println("Response"); // column heading 
}
于 2013-08-22T14:09:01.073 回答
0

我没有正确初始化我的数组

private int[][] responses;

它应该是

private int[][] responses = new int[5][11];
于 2013-08-23T19:02:46.103 回答