簡體   English   中英

無法通過do-while循環制作for循環

[英]Having Trouble Making a for loop with a do-while loop

剛開始使用Java,本周的任務是編寫一個程序,詢問用戶要輸入多少測試分數,用戶填寫多少,然后程序要求他們輸入測試分數,直到滿足該要求為止;在分數中顯示平均值。我覺得我首當其沖,但是只需要更多幫助,就陷入了死循環。 我已經移動了for循環,它要么將我的顯示文本置於一個無休止的循環中,要么在詢問要輸入的分數數之后程序停止運行(現在是現在)。 任何幫助表示贊賞:

import java.util.Scanner;
public class TestScoreApp
{
public static void main(String[] args)
{
    // display operational messages
    System.out.println("Please enter test scores that range from 0 to 100.");
    System.out.println();  // print a blank line

    // initialize variables and create a Scanner object
    int scoreTotal = 0;
    int scoreCount = 0;
    int testScore = 0;
    int count = 0;
    Scanner sc = new Scanner(System.in);
    String choice = "y";
    while (!choice.equalsIgnoreCase("n"))

    while (testScore <= 100)
    {

        // get the input from the user
        System.out.print("Enter the number of scores to be entered: ");
        for (scoreCount = 0; count <=100; scoreCount++)
        scoreCount = sc.nextInt();       

        // get the input from the user
        System.out.print("Enter score: ");
        testScore = sc.nextInt();

        // accumulate score count and score total
        if (testScore <= 100)

        {
            scoreCount = scoreCount + 1;
            scoreTotal = scoreTotal + testScore;
        }
    else if (testScore != 999)
        System.out.println("Invalid entry, not counted");

    // display the score count, score total, and average score
    double averageScore = scoreTotal / scoreCount;
    String message = "\n" +
                      "Score count:   " + scoreCount + "\n"
                    + "Score total:   " + scoreTotal + "\n"
                    + "Average score: " + averageScore + "\n";

    System.out.println(message);       
    System.out.println("Enter more test scores? ('y' to continue, 'n' to close):  ");
    choice = sc.next();
    System.out.println();



         }  
    }
}

嘗試這樣的事情:

// put this above main() - this way you can use it without ever defining a `Scanner` object again
static Scanner in = new Scanner(System.in);

public static void main(String[] args) {

  // store number of scores to enter
  int numScores = 0;

  // input number of scores to enter
  System.out.print("How many scores would you like to enter? ");
  numScores = in.nextInt();

  // store sum of scores
  int scoreTotal = 0;

  // input scores
  for(int i = 0; i < numScores; i++)
    scoreTotal += in.nextInt();

  // print count, sum, and average of scores
  System.out.printf("\nScore count: %d", numScores);
  System.out.printf("\nScore total: %d", scoreTotal);
  System.out.printf(\n Average score: %d", scoreTotal/numScores);
}

我認為這應該可以運行,但是可能會有一個或兩個錯誤。 我不再有Java,但是如果它產生錯誤,我將可以提供幫助。 只需將其放在您的班級中,看看它是如何工作的。 您根本不需要修改它。

  1. 有太多的嵌套時間不是一個好主意,這是非常低效的。
  2. 用try / catch塊圍住代碼是個好主意,因為不確定您是否已學會它,所以我沒有將其放在其中。
  3. 我認為您應該將用戶輸入作為總得分,而不是在for循環中使用100。 無論如何,這就是我會做的,希望這段代碼對您有所幫助:

     import java.util.Scanner; public class test{ public static void main(String[] args){ int count = 0;//amount of scores entered by user int total = 0;//total score added up int current = 0;//current amount of scores entered System.out.println("How many scores would you like to enter?"); Scanner sc = new Scanner(System.in); count = sc.nextInt(); do{ System.out.println("current amount of scores entered is "+current+" please enter the next score"); total += sc.nextInt(); current ++; } while(current < count); System.out.println("the average score of "+current+" entered scores is "+total/count); } 

    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM