2015-10-28 103 views
1

作業分配建議只請,因爲我非常希望學習這是第二性質! 目標是創建一個用戶指定的問題數量(數組大小),然後是答案的數組(現在填充的數組大小)的數組。然後讓用戶輸入「學生」的答案來檢查密鑰。我寫了所有這些,不用擔心。可愛的作品。我遇到的問題有兩個方面:創建一個循環來檢查數組(java)

  • 創建一個循環,要求對另一個測驗進行評分。
  • 它只檢查/得分/計算每隔一個答案。即:甚至只有答案。

我已經使用了一個do/while循環來繼續檢查,但不能得到一個sentinel值來堅持。也取決於我放置它的位置,答案不斷作爲第一次檢查。所以我不確定在哪裏放置以及如何書寫。我甚至試圖在數組和學生答案部分使用for循環拳擊無濟於事。 至於檢查其他每一個,我想修改「我」的計數像((i + 1)* 2),而不是我的++爲兩個for循環,但我只是得到錯誤,因爲這似乎根本不適合。

預先感謝您!

import java.util.Scanner; 
import java.text.NumberFormat; 

public class EvenQuizzes { 
    public static void main(String[] args) { 
     int quizQuest = 0, count = 0; 
     double percentTotal = 0.0; 
     Scanner scan = new Scanner(System.in); 
     System.out.print("How many questions are in the quiz? Or enter 0 to quit. "); 
     quizQuest = scan.nextInt(); 
     int[] answers = new int[quizQuest]; // scan in question total and apply 
              // to array 
     System.out.println("Enter the answer key: "); 
     for (int i = 0; i < answers.length; i++) { 
      answers[i] = scan.nextInt(); 
     } 
     for (int i = 0; i < answers.length; i++) { 
      System.out.println("Enter the answer to be graded : "); 
      int toGrade = scan.nextInt(); 
      if (toGrade == answers[i]) { 
       count++; 
      } 
     } 
     percentTotal = ((double) count/quizQuest); 
     NumberFormat defaultFormat = NumberFormat.getPercentInstance(); 
     defaultFormat.setMinimumFractionDigits(2); 
     System.out.println("The questions answered correctly total: " + count); 
     System.out.println("The percentage correct is: " + defaultFormat.format(percentTotal)); 
     System.out.println("\nAnother quiz to be graded?"); 
    } 
} 
// do (quizQuest != 0){ //condition check to run new quiz against KEY 
// for (int j = 0; (quizQuest = scan.nextInt()) != 0; j++); { 

底部是我曾經考慮過的循環部分,我遇到了麻煩。

+1

爲了檢查是否使用['''''''''(https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op1.html)並且持續循環直到用戶終止,search它不是在谷歌或者是stackoverflow上,就有很多類似的問題 – sam

+1

SO社區應該把這個帖子作爲例子**如何在SO **上提出問題的提示; P – vish4071

+0

你可以使用模(%)得到除法後的餘數( 1%2 == 1)。有了這個,你可以構造一個分支的循環,只有條件匹配時纔會執行某些操作。或者,你可以定義你的循環,每增加1次而不是1次。這兩個方法都值得一讀,並且使用你認爲最合適的那個。 – Creperum

回答

1

至於你問的提示(而不是代碼),那就是:

在超過一個測驗,使用do-while如下:

do{ 
    //do something 
    //scan the value of quiz quest 
    //do something 
}while(quizquest != 0) 

現在,如果在甚至只有答案位置進行檢查,做以下操作:

for (int i =0; i <answers.length; i++) 
    { 

     System.out.println("Enter the answer to be graded : "); 
     int toGrade = scan.nextInt(); 

     if(i % 2 == 0 && toGrade == answers[i]){ 
      count++ ; 

     } 


    } 
+0

謝謝!輪子轉動了!我現在會立刻吐出來。 – GoldenDesign

+0

很高興幫助。通過點擊綠色勾號接受答案:) – vish4071

+0

它的作品!!!!!!好極了! – GoldenDesign

0

您應該有一個變量,可能名稱爲continue,其默認值爲'Y'。在開始時,創建一個while循環,檢查條件continue==Y,並在最後詢問"Another quiz to be graded?"時,讀入變量continue的輸入。

1

創建一個循環,要求等級另一個測驗:你可以使用一個do-while循環用布爾表示,如果用戶(老師嗎?)想要評分另一個測驗:

do{ 
    boolean continue = false; 
    // check if the user wants to continue 
while(continue); 

它只檢查/計分/計算每隔一個答案。即:甚至只有答案:你可以用模運算符檢查甚至答案:

if(i % 2 == 0){ 
    // even answer 
} 

希望這有助於!

+0

謝謝!我沒有考慮過模運算符。我之前有過一段時間的練習,但只有保留一年級時才遇到錯誤。所以當我用四個問題對一半進行測試時,兩個輸出結果都顯示了50%的分數。我需要扮演do { – GoldenDesign

相關問題