2016-11-23 104 views
-1

我正在嘗試創建Java應用程序。 它提出問題,併爲每個問題有4個選擇。計錯問題答案

我想統計用戶選擇的正確答案總數和錯誤答案數。

我使用像這個 -

public void checkAnswer(String choice) 
{ 
    int correctcount=0; 
    int wrongcount=0; 
    if(counter==1) { 
     if (choice.equalsIgnoreCase("a")) { 
      correctAnswerDisplay(); 
      correctcount = correct count + 1; 
     } else { 
      wrongAnswerDisplay(); 
      wrongcount = wroungcount + 1; 
     } 
    } 
    else if(counter==2) { 
     if (choice.equalsIgnoreCase("d")) { 
      correctAnswerDisplay(); 
     } else { 
      wrongAnswerDisplay(); 
     } 
} 

功能基本上我硬編碼爲每個問題的答案。 例如 - 對於這個問題,正確答案是「A」。所以我說如果它的「a」調用正確的答案功能,否則問題#1中的錯誤答案。計數器變量是顯示下一個問題

我如何計算所有問題的總是正確和錯誤的答案。如果他們回答錯誤,我已經允許用戶選擇另一個選項,因此他們在選擇正確的答案之前不會回答下一個問題。但每次當他們選擇錯誤的答案櫃檯將增加更多的數字,它應該只允許1加法,並在那裏停止。

此外,讓我說我選擇了錯誤的答案,我不會得到下一個問題,直到我打繼續按鈕,並繼續按鈕纔出現,只有當我選擇正確的答案。所以,如果我選擇錯誤的答案2次,計數器將是2.它應該工作,因爲我選擇錯誤答案甚至三次,總錯誤答案數應該只有1,並且每個問題的人總是會選擇正確答案一次,因爲繼續按鈕不會直到那時纔會出現。所以如果第一次選錯了答案,它不應該增加正確的計數器。

對不起,我是一個新的程序員。請幫忙。

+2

每當您調用checkAnswer()時,'correctcount'和'wrongcount'的值將被設置爲0 – User528491

+0

假設每個問題的意圖是查看每個問題是否至少有一個錯誤答案,則應該使用標誌而不是計數器。如果你有更多的問題,在性能方面,開關盒比if ... else要好。它不是檢查哪個案例得到滿足,而只是決定哪個案件需要執行。 –

+0

確保發佈編譯的代碼。此代碼不 –

回答

0
package org.test.main; 

import java.util.Scanner; 

public class TestMain { 

    public int correctcount = 0; 
    public int wrongcount = 0; 
    public int counter = 1; // lets assume you have counter as 1 to start with 

    public void checkAnswer(String choice) { 
     if (counter == 1) { 
      if (choice.equalsIgnoreCase("a")) { 
       correctAnswerDisplay(); 
       correctcount = correctcount + 1; 
      } else { 
       wrongAnswerDisplay(); 
       wrongcount = wrongcount + 1; 
      } 
     } else if (counter == 2) { 
      if (choice.equalsIgnoreCase("d")) { 
       correctAnswerDisplay(); 
       correctcount = correctcount + 1; 
      } else { 
       wrongAnswerDisplay(); 
       wrongcount = wrongcount + 1; 
      } 
     } 
    } 

    private void wrongAnswerDisplay() { 
     System.out.println("Wrong"); 

    } 

    private void correctAnswerDisplay() { 
     System.out.println("Correct"); 
    } 

    public static void main(String[] args) { 

     TestMain testM = new TestMain(); 
     Scanner scanNext = new Scanner(System.in); 
     for(int i = 0; i < 2;i++) { 
      System.out.print("Question#"+(i+1)+": "); 
      String ans = scanNext.nextLine(); 
      testM.checkAnswer(ans); 
      testM.counter++; 
     } 

     System.out.println("Number of Correct Answer:" + testM.correctcount); 
     System.out.println("Number of Wrong Answer:" + testM.wrongcount); 

    } 
} 

讓您correctcountwrongcount作爲實例變量。因爲每次調用方法checkAnswer()時,都會在您在方法中創建的2個變量中分配0。

我試圖模擬你的邏輯。所以試試這個。問題和答案的數量是硬編碼的。所以在你的邏輯中改變它是動態的。我編寫此代碼以瞭解增量如何工作。

+0

對不起,我仍然困惑。所以,如果我改變這樣的代碼 - – aa4931

+0

告訴我們你所得到的。編輯您的帖子以幫助他人。 – msagala25

+0

我編輯了我的帖子。試試這個。 – msagala25

0

這是一個非常好的事情,你已經開始使用像Stackoverflow這樣的社區。

形成問題很明顯,有一個繼續按鈕,只有當您選擇正確的答案時纔會啓用。 (然後用這樣的一個按鈕來計算正確的答案是沒有意義的,最後你會得到所有正確答案的問題。無論如何,如果你真的想要這個邏輯起作用,請嘗試以下內容。)

讓我們來創建一個方法incrementWrongCount()增加變量wrongcount。

public class AnswerTester{ 
    int correctcount = 0; 
    int wrongcount = 0; 

    /*Following variable indicates whether you have selected any wrong answers before 
    selecting the right answer. Obviously its default value is false since you 
    have selected no wrong answers (in fact no answers) when you first 
    you first answers a question*/ 
    boolean wronganswerselected = false; 

    public void checkAnswer(int counter, String choice){ 
     if(counter==1) { 
      if (choice.equalsIgnoreCase("a")) { 
       correctAnswerDisplay(); 
       correctcount = correctcount + 1; 
       incrementWrongCount(); 
       wronganswerselected = false;//For the next question 
       enableContinueButton(); 
      } else { 
       wrongAnswerDisplay(); 
       wronganswerselected = true;//just indicate that you have selected a wrong answer. We will increment wrong count in incrementWrongCount() 
       disableContinueButton(); 
      } 
     } else if(counter==2) { 
      if (choice.equalsIgnoreCase("d")) { 
       correctAnswerDisplay(); 
       correctcount = correctcount + 1; 
       incrementWrongCount(); 
       wronganswerselected = false; 
       enableContinueButton(); 
      } else { 
       wrongAnswerDisplay(); 
       wronganswerselected = true; 
       disableContinueButton(); 
      } 
     } 
    } 

    private void incrementWrongCount(){ 
     if(wronganswerselected){//Should increment wrongcount only if the user have selected atleast one wrong answer. 
      wrongcount = wrongcount + 1; 
     } 
    } 

    private void correctAnswerDisplay(){ 
     System.out.println("Correct.."); 
    } 

    private void wrongAnswerDisplay(){ 
     System.out.println("Wrong.."); 
    } 

    public int getCorrectCount(){ 
     return correctcount; 
    } 

    public int getWrongCount(){ 
     return wrongcount; 
    } 

} 

它是一個很好的做法,使用開關而不是if ... else如果匹配一個變量與多個值。

+0

那工作.....你是一個天才......非常感謝你。上帝祝福你 :) – aa4931