java计算平均值

时间:2014-02-21 11:19:19

标签: java

我正在尝试执行以下java分配,并且每件事似乎都能正常工作,除非我输入数字< 4或> 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);
      }

   } 

} 

5 个答案:

答案 0 :(得分:3)

在第二个if之前放入一个else,所以只有在第一个不是的时候才会这样做:

if (inputNumber<4 || inputNumber>10) {
    System.out.println("Invalid grade!");
} else if (count==0) {
    System.out.print("You didn't enter any data!");
}

答案 1 :(得分:0)

当您以负整数结束时,inputNumber将始终小于4,因此

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

总是如此。

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

 do {    
      System.out.print("Input a grade (4-10): ");
      inputNumber = reader.nextInt(); 
      if (inputNumber<4 || inputNumber>10) {
         break ; // 
      }
    sum += inputNumber;   
    count++;              


  }while (count <= 4) {

  if (count==0) {
      System.out.print("You didn't enter any data!");
  }

答案 2 :(得分:0)

由于这是一项任务,我宁愿给你一个线索,而不是答案......

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

答案 3 :(得分:0)

是的,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();
    }

答案 4 :(得分:-1)

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