当前位置: 首页 > 知识库问答 >
问题:

需要帮助查找平均值

怀飞扬
2023-03-14

我似乎无法从用户输入的分数中计算出平均分数。我也不能让它停止例外输入大于100或小于0。有人能告诉我我做错了什么吗?谢谢

public static void main(String[] args) {


   Scanner scan = new Scanner(System.in);

   int sum = 0;
   int inputNumber;
   int numberExams;
   float averageScore;
   double max = 0; 
   double min = 101;      


   System.out.println("Enter the total number of exams you want a average");
   numberExams = scan.nextInt();

   System.out.println("Please enter " + numberExams + " numbers:");

   for(int i = 1; i<=numberExams ;i++){          
    inputNumber = scan.nextInt();
    sum = sum + inputNumber;
    System.out.println();

   if(inputNumber > max){
    max = inputNumber;
}
   if(inputNumber < min){
    min = inputNumber;
}
   if(inputNumber > -1 && inputNumber < 101){
    sum = sum + inputNumber;
}
   else{
    System.out.println("You entered a number that wasn't in the range of 0 to 100");
}
} 


    averageScore = sum / numberExams;

System.out.println( "The Max Exam Score is: " + max );
System.out.println( "The Minimum Exam Score is: " + min );    
System.out.println("The Average Exam Score is: " + averageScore );
}
}

共有2个答案

牟华翰
2023-03-14

在分配到最小值或最大值之前,应首先检查范围。

这项工作:

public static void main(String[] args) {
  Scanner scan = new Scanner(System.in);

  int sum = 0;
  double averageScore;
  double max = 0;
  double min = 101;

  System.out.println("Enter the total number of exams you want a average");
  final int numberExams = scan.nextInt();

  System.out.println("Please enter " + numberExams + " numbers:");

  for (int i = 0; i < numberExams; ++i) {
    final int inputNumber = scan.nextInt();

    if (inputNumber >= 0 && inputNumber <= 100) {
      System.out.println();

      if (inputNumber > max) {
        max = inputNumber;
      }
      if (inputNumber < min) {
        min = inputNumber;
      }
      sum += inputNumber;
    }
    else {
      System.out.println("You entered a number that wasn't in the range of 0 to 100");
    }
  }

  averageScore = sum / numberExams;

  System.out.println("The Max Exam Score is: " + max);
  System.out.println("The Minimum Exam Score is: " + min);
  System.out.println("The Average Exam Score is: " + averageScore);
}

请注意,如果您收到无效输入,您仍然会计算错误的分数数量。您可以通过几种不同的方式来处理它。一种是在ore块内减少i

黄丰
2023-03-14

您在for循环中执行了两次sum=sum inputNumber。

此外,您需要将int转换为double来计算平均值:

double average = ((double) sum) / numberExams;
 类似资料:
  • 我是Hadoop Map/Reduce的新手。我正在尝试编写一个Map/Reduce作业,以查找n个进程所花费的平均时间,给定一个输入文本文件,如下所示: 我读了一些教程,但仍然不能完全理解。我的mapper和reducer类应该如何解决这个问题?我的输出将始终是文本文件,还是可以直接将平均值存储在某种变量中? 谢了。

  • 我的问题类似于SQL选择组查询。但是架构发生了变化,我想要不同的结果,如下所述。给定链接的解决方案没有给我正确的解决方案。您可以使用SQL小提琴来解决这个问题。 下面是我的桌子 表1 现在,我想显示每个产品的两个最低金额,如果金额相同,那么任何人都按照升序排列... 所以我想构建单个SQL查询,它给我的结果如下。 请帮我建立这样的查询。

  • 问题内容: 我正在使用MAT比较两个堆转储。我每天都进行堆转储,并且每天增长约200兆。我认为该泄漏与java.util.zip有关,这是因为该表显示的内容,也是因为我们最近添加了一个新过程,该过程可以压缩和解压缩很多文件。(见图片) 此时,我打开支配器并过滤。 充气机 。那产生了大量的java.util.zip.Inflater。现在,我想看看是什么使它们保持打开状态,所以我选择了一个,并运行了

  • 首先,我是C、C++、C#、Android和Swift的开发人员,但我绝对没有JavaScript、PHP或Web开发经验。 即只接受整数值的输入。 这是刀片代码:

  • 编写一个查询以显示staffid、费用代码、专科id、专科名称、会诊日期、患者号和到期日将使用会诊日期+21计算 STAFFID NOT NULL CHAR(2) FIRSTNAME VARCHAR2(20) LASTNAME VARCHAR2(20) 角色VARCHAR2(15) 性别CHAR(1) 日期连接日期 DATELEFT DATE SQL>描述staffspeciality错误: OR

  • 我被作业的最后一部分卡住了,只是不知道如何完成它。 我的任务是取3个权重(以磅和盎司为单位)并获得平均权重,然后将其打印到命令行。我目前的想法是将所有三个权重相加,然后我认为将它们除以3就很容易了。但是当我尝试这样做时,它会抛出一个错误,说“二进制运算符'/'的坏操作数类型” 我有两个单独的文件。 “” 第二个文件: 第二个文件是我需要帮助的地方。在findAverage方法中。