【问题标题】:How to exclude an input number within a range from calculating the highest number and average?如何从计算最高数和平均值中排除某个范围内的输入数?
【发布时间】:2017-10-25 10:43:52
【问题描述】:

在我的程序中,我试图让用户输入一个不确定的分数,介于 0 到 100 之间,如果它低于 0 或超过 100,则会出现错误消息,直到用户输入“999”,然后显示输入的成绩数、最高数、最低数和平均数。

我的程序中的所有东西都可以正常工作,但是我不知道如何排除“999”,该“999”使用户能够输入最高等级和平均水平的数字。

这是我的代码:

import java.util.Scanner;

public class TestScoreStatistics
{
public static void main(String[] args)
{
  int numberOfScores = 0;
  int highest = 0;
  int lowest = 100;
  double average;
  Integer score = 0;
  int sumOfScores = 0;

  Scanner input = new Scanner(System.in);

  System.out.println("Please enter a grade or enter 999 to finish >> ");
  score = input.nextInt();
  sumOfScores = sumOfScores + score;


     while (score != 999 && score <= 100 && score >= 0)
     {

      System.out.println("Please enter a grade or enter 999 to finish >> ");
      score = input.nextInt();
      sumOfScores = sumOfScores + score;
      ++numberOfScores;
      if(score > highest){
      highest=score;}
      else if(score<lowest){
      lowest=score;}
     }
        while (score != 999 && score > 100 || score < 0)
        {
            System.out.println("You entered an invalid score. Please enter a valid test score.");
            System.out.println("Please enter a grade or enter 999 to finish >> ");
            score = input.nextInt();
            sumOfScores = sumOfScores + score;

        }
             if (score == 999)
             {
             System.out.println("Number of Scores you entered: " + numberOfScores);
             System.out.println("Highest Score: " + highest);
             System.out.println("Lowest Score: " + lowest);
             average = sumOfScores / numberOfScores;
             System.out.println("Average Score: " + average);
             }
  }
}

【问题讨论】:

    标签: java


    【解决方案1】:

    您有两个额外的循环,我将从一个无限循环开始,检查999 和有效性,然后增加值(并更新highestlowest 等)。喜欢,

    public static void main(String[] args) {
        int numberOfScores = 0, highest = 0, lowest = 100;
        int sumOfScores = 0;
    
        Scanner input = new Scanner(System.in);
        while (true) {
            System.out.println("Please enter a grade or enter 999 to finish >> ");
            int score = input.nextInt();
            if (score == 999) {
                break; // <-- end the loop
            } else if (score > 100 || score < 0) {
                System.out.println("You entered an invalid score. " 
                        + "Please enter a valid test score.");
            } else {
                sumOfScores += score;
                numberOfScores++;
                highest = Math.max(highest, score);
                lowest = Math.min(lowest, score);
            }
        }
        System.out.println("Number of Scores you entered: " + numberOfScores);
        System.out.println("Highest Score: " + highest);
        System.out.println("Lowest Score: " + lowest);
        double average = sumOfScores / (double) numberOfScores;
        System.out.println("Average Score: " + average);
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-26
      • 2022-11-28
      • 1970-01-01
      • 2021-08-21
      • 2011-05-10
      • 2019-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多