我需要位于Survey文件末尾的reportSummary()
方法的帮助。我正在使用我在网上找到的说明从头开始构建调查程序。我一直到这一点,但我不确定我错过了什么。
当前错误(在使用以下答案的帮助后):
C:\Users\Nael\Documents\NetBeansProjects\Survey\src\survey\Survey.java:156: error: illegal start of type
if (questions[i] instanceof (DoubleQuestions))
C:\Users\Nael\Documents\NetBeansProjects\Survey\src\survey\Survey.java:156: error: not a statement
if (questions[i] instanceof (DoubleQuestions))
C:\Users\Nael\Documents\NetBeansProjects\Survey\src\survey\Survey.java:156: error: ';' expected
if (questions[i] instanceof (DoubleQuestions))
C:\Users\Nael\Documents\NetBeansProjects\Survey\src\survey\Survey.java:186: error: class, interface, or enum expected
}
4 errors
C:\Users\Nael\Documents\NetBeansProjects\Survey\nbproject\build-impl.xml:930: The following error occurred while executing this line:
C:\Users\Nael\Documents\NetBeansProjects\Survey\nbproject\build-impl.xml:270: Compile failed; see the compiler error output for details.
Survey.java:
package survey;
import java.util.Scanner;
import java.io.Serializable;
public class Survey implements Serializable
{
private String surveyName;
private Question[] questions;
private int numQuestions;
private int maxResponses;
private boolean initialized;
public Survey(String n)
{
surveyName = n;
initialized = false;
}
//initialize() sets up the numQuestions, MaxResponses, and questions for the survey
public char Questions()
{
Scanner input = new Scanner(System.in);
System.out.println("Initializing survey \"" + surveyName + "\"\n");
//add a method for password validation!?!?!? yes!!! see the bank accounts lab
System.out.print("Enter max number of responses: ");
maxResponses = input.nextInt();
System.out.print("Enter number of questions: ");
numQuestions = input.nextInt();
input.nextLine(); //have to do this to "eat" the new line character or the next input won't work correctly
System.out.println();
questions = new Question[numQuestions];
char choice='c';
for(int i = 0; i < numQuestions;i++)
{
//output menu options
System.out.println();
System.out.println(" S - Create a String Question");
System.out.println(" N - Create a Integer Question");
System.out.println(" D - Create a Double Question");
//loop until a valid input is entered
System.out.print("Enter choice: ");
choice = input.next().charAt(0);
input.nextLine(); //still have to "eat" the current response
//if choice is one of the options, return it. Otherwise keep looping
if( choice == 'N' )
{
System.out.print("Enter text for question " + (i+1) + ": ");
//you will also need to ask what KIND of question - right now, defaults to integer question
questions[i] = new IntegerQuestion(input.nextLine(),maxResponses);
initialized = true;
}
else if(choice == 'S')
{
System.out.print("Enter text for question " + (i+1) + ": ");
//you will also need to ask what KIND of question - right now, defaults to integer question
questions[i] = new TextQuestion(input.nextLine(),maxResponses);
initialized = true;
}
else if(choice == 'D')
{
System.out.print("Enter text for question " + (i+1) + ": ");
//you will also need to ask what KIND of question - right now, defaults to integer question
questions[i] = new DoubleQuestions(input.nextDouble(),maxResponses);
initialized = true;
}
else
{
System.out.println("Invalid choice. Ensure a capital letter. Please re-enter.");
choice = '?';
}
}
return choice;
}
/*
run() gives the survey to a new survey taker, basically asks all the questions in the survey
*/
public void startSurvey()
{
if(initialized)
{
System.out.println("Welcome to the survey \"" + surveyName + "\"\n");
for(int i = 0;i < numQuestions; i ++)
{
questions[i].askQuestion();
}
System.out.println("Thank you for participating!");
}
else
{
System.out.println("Survey has not yet been setup. Please initialize first.");
}
}
/*
displayResults() displays the raw data for the survey
*/
public void Results()
{
System.out.println("Displaying data results for \"" + surveyName + "\"\n");
for(int i = 0;i < numQuestions; i ++)
{
questions[i].displayResults();
System.out.println();
}
}
/*
displayReportSummary() should run tests on your data
Examples could be: the most common response (median), the average response (mean), or display a graph of the results?
The choices are endless!
*/
public void reportSummary()
{
for(int i=0;< numQuestions; i ++)
{
if (questions[i] instanceof (DoubleQuestions)
{
DoubleQuestions temp = (DoubleQuestions) questions[i];
temp.doubleAverage();
System.out.println();
}
}
}
}
DoubleQuestion:
package survey;
import java.util.Scanner;
public class DoubleQuestions extends Question
{
private double[] responses;
public DoubleQuestions(double q, int m)
{
super(Double.toString(q),(m));
responses = new double[m];
}
@Override
public void askQuestion()
{
double response;
Scanner input = new Scanner(System.in);
System.out.print(question + " ");
input.nextLine(); //still have to "eat" the current response
response = input.nextDouble();
responses[numResponses] = response;
numResponses++;
}
@Override
public void displayResults()
{
System.out.println(question);
for(int i = 0; i < numResponses;i++)
System.out.println(responses[i]);
}
}
答案 0 :(得分:0)
您应该尝试理解编译器向您抛出的错误消息。它清楚地说明了行号以及您在代码中执行的错误。
您需要关闭if条件的parantheses:
if (questions[i] instanceof (DoubleQuestions)
必须是
if (questions[i] instanceof (DoubleQuestions))
您的for
循环条件中缺少i
。
for(int i=0;< numQuestions; i ++)
必须是:
for(int i=0;i < numQuestions; i ++)
public void reportSummary()
{
for(int i=0;< numQuestions; i ++)
{
if (questions[i] instanceof (DoubleQuestions)) // This line
{
DoubleQuestions temp = (DoubleQuestions) questions[i];
temp.doubleAverage();
System.out.println();
}
}
}
希望这有帮助!
答案 1 :(得分:0)
在此循环中,您有三个错误。
这一行:
for(int i=0;< numQuestions; i ++)
这里你错过了条件< numQuestions
这一行中的另一个:
if (questions[i] instanceof (DoubleQuestions)
您错过了近距离)
。
但是
if (questions[i] instanceof (DoubleQuestions))
上面的行应该是:
if (questions[i] instanceof DoubleQuestions)
修复它:
for(int i=0; i < numQuestions; i ++)
{
if (questions[i] instanceof DoubleQuestions)
{
DoubleQuestions temp = (DoubleQuestions) questions[i];
temp.doubleAverage();
System.out.println();
}
}
您的doubleAverage()
方法也未在DoubleQuestions
课程中实施。所以你不能参考它。
所以你不能这样做:
DoubleQuestions temp = (DoubleQuestions) questions[i];
temp.doubleAverage();
首先实施doubleAverage()
。然后试试。