首页 > 解决方案 > ZyBooks Lab 2.31 小数 Java

问题描述

当平均数字并试图“浮动它”(?)时,我无法弄清楚如何得到正确的答案(?)我试图得到 6.750 的答案,但只能继续得到 6.000。

指示:

2.31 实验室:简单统计第 1 部分给定 4 个整数,使用整数算术输出它们的乘积和它们的平均值。

例如:如果输入是:

8 10 5 4 输出为:

1600 6 注意:整数除法会丢弃分数。因此 8 10 5 4 的平均值输出为 6,而不是 6.75。

注意:测试用例包括四个非常大的输入值,其乘积会导致溢出。你不需要做任何特别的事情,只要观察输出不代表正确的产品(事实上,四个正数产生一个负输出;哇)。

提交以上内容进行评分。在您完成下面的第 2 部分之前,您的程序将失败最后一个测试用例(这是预期的)。

第 2 部分还使用浮点运算输出乘积和平均值。

输出每个小数点后三位的浮点值,可实现如下: System.out.printf("%.3f", yourValue);

例如:如果输入为 8 10 5 4,则输出为:

1600 6

1600.000 6.750

这是我的代码:

import java.util.Scanner;

public class LabProgram {
   public static void main(String[] args) {
      Scanner scnr = new Scanner(System.in);
      int num1;
      int num2;
      int num3;
      int num4;
      int numAvg;
      int numProd;

      num1 = scnr.nextInt();
      num2 = scnr.nextInt();
      num3 = scnr.nextInt();
      num4 = scnr.nextInt();
     
      numAvg = ((num1 + num2 + num3 + num4) / 4);
      numProd = num1 * num2 * num3 * num4;
     
      System.out.println(numProd + " " + numAvg);
     
      System.out.printf("%.3f", ((double) numProd));
      System.out.print(" ");
      System.out.printf("%.3f", ((double) numAvg));
     
   }
}


`

标签: java

解决方案


本实验要求您为每个部分编写 2 种不同的计算,一种用于整数,另一种用于双数。在第 1 部分使用大输入将导致在打印结果之前溢出,因为您将乘积平均值定义为整数。

//Part 1
  int product = num1*num2*num3*num4;
  int average = (num1+num2+num3+num4)/4;
  System.out.println(product+" "+average);
//Part 2
  double prod = ((double)num1)*num2*num3*num4;
  double ave =  (double)(num1+num2+num3+num4)/4;
  System.out.printf("%.3f", prod);
  System.out.print(" ");
  System.out.printf("%.3f", ave);
  System.out.println();

推荐阅读