2017-05-31 10 views
-3

調査ファイルの末尾にあるreportSummary()メソッドのヘルプが必要です。私は、オンラインで見つけた指示を使って最初から調査プログラムを作成しています。私はこの時点までのすべての道ですが、私は何が欠けているか分かりません。java - レポートを表示して結果を処理する

現在のエラー(下記の回答からの助けを使用した後):

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]); 
     } 

} 
+6

あなたの質問は正確ですか?また、不要なコードを削除して[MCVE]を作成してください – anacron

+0

私の質問は 'reportSummary()'にあります。私のコードは機能しません。 –

+0

機能がないとはどういう意味ですか? – Blasanka

答えて

0

このループには3つのエラーがあります。ここで

for(int i=0;< numQuestions; i ++) 

あなたはmisswd条件この行の< numQuestions

もう1:

この行の一つを

ここ
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()を実装しています。次に試してみてください。

0

あなたがしようとすると、エラーを理解する必要がありますコンパイラがあなたに投げているメッセージ。これは、行番号とコードでどのようなエラーが発生したかを明確に示しています。

あなたの場合の条件の括弧を閉じる必要があります:

if (questions[i] instanceof (DoubleQuestions) 

はあなたのforループが条件で行方不明iを持って

if (questions[i] instanceof (DoubleQuestions)) 

でなければなりません。

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(); 
       } 
    } 
} 

は、この情報がお役に立てば幸い!

+0

答えをくれてありがとう、それはタイプミスを修正しましたが、今度は7つのエラーがあります。 –

関連する問題