Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java计算平均值_Java - Fatal编程技术网

java计算平均值

java计算平均值,java,Java,我正在尝试做下面的java作业,每件事似乎都很好,除了我输入一个数字10,它会打印两个“无效等级!” “你没有输入任何数据!”我想要的是只打印“无效分数!”我试图修复它,但我做不到。有人能帮我吗 谢谢 作业: 创建一个程序,询问考试结果并计算平均成绩。等级是介于4和10之间的浮点数。程序要求分数,直到输入负数为止。如果用户给出的分数不是4到10之间的数字,屏幕上将打印文本“无效分数!”,程序将要求另一个分数。最后,程序在屏幕上打印输入的分数及其平均值,如示例打印所示。如果没有输入任何分数,屏幕上

我正在尝试做下面的java作业,每件事似乎都很好,除了我输入一个数字10,它会打印两个“无效等级!” “你没有输入任何数据!”我想要的是只打印“无效分数!”我试图修复它,但我做不到。有人能帮我吗

谢谢

作业: 创建一个程序,询问考试结果并计算平均成绩。等级是介于4和10之间的浮点数。程序要求分数,直到输入负数为止。如果用户给出的分数不是4到10之间的数字,屏幕上将打印文本“无效分数!”,程序将要求另一个分数。最后,程序在屏幕上打印输入的分数及其平均值,如示例打印所示。如果没有输入任何分数,屏幕上只会显示“您没有输入任何分数”的通知

提示:将使用双精度类型变量存储平均值

程序被写入一个名为Average的类

示例输出

程序计算输入成绩的平均值。 以负整数结束

Input a grade (4-10): 5
Input a grade (4-10): 6,5
Input a grade (4-10): 7,5
Input a grade (4-10): 7
Input a grade (4-10): 0
Invalid grade!
Input a grade (4-10): -4

4 grades inputted.

Average of the grades: 6.5
代码

import java.util.Scanner;
public class apples {

   public static void main(String[] args) {

      int inputNumber=0;   
      int sum;           
      int count;         
      double average;    



      sum = 0;
      count = 0;


      Scanner reader = new Scanner(System.in);
      System.out.println("Program calculates the average of inputted grades.");
      System.out.println("Finish with a negative integer.");
      System.out.print("Input a grade (4-10): ");
      inputNumber = reader.nextInt();


      while (inputNumber > 0 && inputNumber>=4 && inputNumber<=10) {
         sum += inputNumber;   
         count++;              
         System.out.print("Input a grade (4-10): ");
         inputNumber = reader.nextInt();

      }

      if (inputNumber<4 || inputNumber>10) {
          System.out.println("Invalid grade!");
      }

      if (count==0) {
          System.out.print("You didn't enter any data!");
      }
      else {
         average = ((double)sum) / count;
         System.out.println();
         System.out.println(count + " grades inputted.");
         System.out.print("Average of the grades: "+ average);
      }

   } 

} 
import java.util.Scanner;
公营苹果{
公共静态void main(字符串[]args){
int inputNumber=0;
整数和;
整数计数;
双倍平均;
总和=0;
计数=0;
扫描仪阅读器=新扫描仪(System.in);
System.out.println(“程序计算输入分数的平均值”);
System.out.println(“以负整数结束”);
系统输出打印(“输入a等级(4-10):”;
inputNumber=reader.nextInt();

而(inputNumber>0&&inputNumber>=4&&inputNumber在第二个if之前放入一个else,因此仅当第一个if不是:

if (inputNumber<4 || inputNumber>10) {
    System.out.println("Invalid grade!");
} else if (count==0) {
    System.out.print("You didn't enter any data!");
}
if(inputNumber10){
System.out.println(“无效等级!”);
}否则如果(计数==0){
System.out.print(“您没有输入任何数据!”);
}

使用负整数结束时,inputNumber将始终小于4,因此

if (inputNumber<4 || inputNumber>10) {
      System.out.println("Invalid grade!");
  }
if(inputNumber10){
System.out.println(“无效等级!”);
}
这永远是真的

将其更改为以下内容(稍微易于阅读):

do{
系统输出打印(“输入a等级(4-10):”;
inputNumber=reader.nextInt();
如果(输入编号10){
中断;//
}
总和+=输入数;
计数++;

}由于这是一项作业,我宁愿给你一个线索而不是答案

仔细看看你的while循环——它从未被输入。
这意味着输入时计数为0,例如3。当它执行时,您同时满足两个条件,这意味着两行都在打印。您需要修改代码,以确保满足(或达到)一个或另一个条件,但不是同时满足(或达到)两个条件。

是的,一个
if-else
在这里会有所帮助,但在哪里放置它也很重要

    while (inputNumber > 0) {
        if (inputNumber<4 || inputNumber>10) {
            System.out.println("Invalid grade!");
        } else {
            sum += inputNumber;
            count++;
        }
        System.out.print("Input a grade (4-10): ");
        inputNumber = reader.nextInt();
    }
while(inputNumber>0){
如果(输入编号10){
System.out.println(“无效等级!”);
}否则{
总和+=输入数;
计数++;
}
系统输出打印(“输入a等级(4-10):”;
inputNumber=reader.nextInt();
}
导入java.util.Scanner;
公共课平均分{
公共静态void main(字符串[]args){
int-total=0;
双倍数字总和=0,输入的数字=0,平均值=0;
扫描仪阅读器=新扫描仪(System.in);
系统输出
.print(“程序计算输入分数的平均值。\n用负整数结束。\n\n”);
做{
系统输出打印(“输入a等级(4-10):”;
输入的数字=reader.nextDouble();
如果(输入的数字=4){
数字总和=数字总和+输入的数字总和;
总计++;
}
如果(输入的编号==0 | |输入的编号<4
||输入的数量(大于10){
系统输出打印(“无效等级!”);
系统输出打印(“\n输入等级(4-10):”;
输入的数字=reader.nextDouble();
}
如果(输入的数字小于0){
如果(总计==0){
System.out.print(“您没有输入任何分数。”);
}否则{
平均值=数量总和/总数;
系统输出打印(输入的总成绩+“成绩”。\n”);
系统输出打印(“平均等级:+avg”);
}
}
}同时(输入的数量>0);
}
}

if
中添加一个
返回;
。Aha:错过了原始要求:“如果用户给出的分数不是4到10之间的数字,屏幕上将打印文本“无效分数!”,程序将要求另一个分数。”因此,应该用continue或keep循环替换break;,并查看Don Temple的解决方案。Dan建议的一点是:如果输入0作为一年级,它将不会进入循环:将算法更改为do while
do{read input if(负数)break if(4到10之间)process sum and count else message}while(可能是count,谢谢Dan,我根据你的建议编辑了我的代码,但输出不一样。当我输入0时,它告诉我“你没有输入任何数据!”但我希望输出为“你没有输入任何数据!”并继续要求更多分数。再次感谢。将while条件更改为
inputNumber>=0
,这将打印“无效分数”,然后提示您输入另一个分数。1)请不要只给人们代码,给他们指针。2)请格式化您的代码。
    while (inputNumber > 0) {
        if (inputNumber<4 || inputNumber>10) {
            System.out.println("Invalid grade!");
        } else {
            sum += inputNumber;
            count++;
        }
        System.out.print("Input a grade (4-10): ");
        inputNumber = reader.nextInt();
    }
import java.util.Scanner;

public class Average {
    public static void main(String[] args) {
        int total = 0;
        double number_sum = 0, number_entered = 0, avg = 0;
        Scanner reader = new Scanner(System.in);
        System.out
                .print("Program calculates the average of inputted grades. \nFinish with a negative integer.\n\n");
        do {
            System.out.print("Input a grade (4-10): ");
            number_entered = reader.nextDouble();
            if (number_entered <= 10 && number_entered >= 4) {
                number_sum = number_sum + number_entered;
                total++;
            }
            if (number_entered == 0 || number_entered < 4
                    || number_entered > 10) {

                System.out.print("Invalid grade!");
                System.out.print("\nInput a grade (4-10): ");
                number_entered = reader.nextDouble();
            }
            if (number_entered < 0) {
                if (total == 0) {
                    System.out.print("You did not input any grades.");
                } else {
                    avg = number_sum / total;
                    System.out.print(total + " grades inputted.\n");
                    System.out.print("Average of the grades: " + avg);
                }
            }
        } while (number_entered > 0);
    }
}