【问题标题】:java Calculating the mean averagejava计算平均数
【发布时间】:2015-03-31 06:05:23
【问题描述】:

我正在尝试执行以下 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);
      }

   } 

} 

【问题讨论】:

  • 将return; 添加到if。

标签: java


【解决方案1】:

在第二个 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!");
}

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 感谢 Dan,我根据您的建议编辑了代码,但输出不一样。当我输入 0 时,它告诉我“您没有输入任何数据!”但我想要的是“你没有输入任何数据!”并继续要求更高的成绩。再次感谢您。
    • 将 while 条件更改为 inputNumber &gt;= 0 这将打印“无效成绩”,然后提示您输入另一个成绩。
    【解决方案3】:

    当你以负整数结束时,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!");
      }
    

    【讨论】:

    • 啊哈:错过了原始要求:“如果用户给出的分数不是 4 到 10 之间的数字,则文本“无效分数!”将打印在屏幕上,程序要求另一个成绩。”所以休息;应该替换为 continue 或保持循环,并查看 Don Temple 的解决方案。
    • 关于 Dan 的建议的一件事:如果您输入 0 作为一年级,它将不会进入循环:将算法更改为 do-while do { read input if( negative) break if( between 4 and 10 ) process sum and count else message } while ( some condition (maybe count &lt;= 4 ) ) if( count == 0 ) ....
    【解决方案4】:

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

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

    【讨论】:

      【解决方案5】:
      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);
          }
      }
      

      【讨论】:

      • 1) 请不要只给人们代码,给他们指点。 2) 请格式化您的代码。
      猜你喜欢
      • 2015-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-13
      • 1970-01-01
      • 2013-01-14
      • 2011-01-03
      相关资源
      最近更新 更多