简体   繁体   English

无法通过do-while循环制作for循环

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

just started with Java and my assignment this week is to write a program that asks the user how many test scores they want to enter, which the user fills in and then the program asks them to enter test scores up until that counter is met, and display the average amongst the scores.I feel like i have the brunt of it but just need some more help its kind of in a dead loop and I'm stuck. 刚开始使用Java,本周的任务是编写一个程序,询问用户要输入多少测试分数,用户填写多少,然后程序要求他们输入测试分数,直到满足该要求为止;在分数中显示平均值。我觉得我首当其冲,但是只需要更多帮助,就陷入了死循环。 I've moved my for loop around and it either puts my display text into a neverending loop or the program stalls after asking for number of scores to be entered (this is where it is now). 我已经移动了for循环,它要么将我的显示文本置于一个无休止的循环中,要么在询问要输入的分数数之后程序停止运行(现在是现在)。 Any help is appreciated: 任何帮助表示赞赏:

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



         }  
    }
}

Try something like this: 尝试这样的事情:

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

I think this should run, but it may have a bug or two. 我认为这应该可以运行,但是可能会有一个或两个错误。 I do not have Java any more, but I will be able to help if it produces an error. 我不再有Java,但是如果它产生错误,我将可以提供帮助。 Just place this in your class and see how it works. 只需将其放在您的班级中,看看它是如何工作的。 You shouldn't need to modify it at all. 您根本不需要修改它。

  1. it is not a good idea to have so many nested whiles, it is very inefficient. 有太多的嵌套时间不是一个好主意,这是非常低效的。
  2. it is a good idea to surround the code with try/catch blocks, I didn't put it in there since I'm not sure you have learnt it. 用try / catch块围住代码是个好主意,因为不确定您是否已学会它,所以我没有将其放在其中。
  3. I think you should take user input as total amount of scores, instead of using 100 in the for loop. 我认为您应该将用户输入作为总得分,而不是在for循环中使用100。 anyway, this is what I would do, hope this code helps: 无论如何,这就是我会做的,希望这段代码对您有所帮助:

     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