麻烦使用do-while循环进行for循环

时间:2014-01-25 23:44:10

标签: java loops

刚开始使用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();



         }  
    }
}

2 个答案:

答案 0 :(得分:1)

尝试这样的事情:

// 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 :(得分:0)

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

    }