ZyBooks实验室2.31十进制Java
当平均数字并尝试“浮动它”时,我不知道如何得到正确答案(?)我试图得到6.750的答案,但只得到6.000 说明: 2.31实验室:简单统计 第一部分 给定4个整数,使用整数算术输出其乘积和平均值 例如:如果输入为: 81054 输出为: 16006 注意:整数除法丢弃分数。因此,8 10 5 4的平均值输出为6,而不是6.75 注意:测试用例包括四个非常大的输入值,其乘积导致溢出。您不需要做任何特殊的事情,只需观察输出并不代表正确的产品(事实上,四个正数产生一个负数输出;哇) 提交以上内容进行评分。在您完成下面的第2部分之前,您的程序将无法通过最后的测试用例(这是预期的) 第二部分 还可以使用浮点算法输出乘积和平均值 输出每一个小数点后三位的浮点值,具体实现如下: System.out.printf(“%.3f”,您的值) 例如:如果输入为8 10 5 4,则输出为: 16006 1600.000 6.750 这是我的密码:ZyBooks实验室2.31十进制Java,java,Java,当平均数字并尝试“浮动它”时,我不知道如何得到正确答案(?)我试图得到6.750的答案,但只得到6.000 说明: 2.31实验室:简单统计 第一部分 给定4个整数,使用整数算术输出其乘积和平均值 例如:如果输入为: 81054 输出为: 16006 注意:整数除法丢弃分数。因此,8 10 5 4的平均值输出为6,而不是6.75 注意:测试用例包括四个非常大的输入值,其乘积导致溢出。您不需要做任何特殊的事情,只需观察输出并不代表正确的产品(事实上,四个正数产生一个负数输出;哇) 提交以上内容进行
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));
}
}
`
本实验室要求您为每个零件编写两种不同的计算,一种用于整数,另一种用于双数。在第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();
您正在使用整数值进行操作。如果它是int类型,你怎么能期望
numAvg
包含十进制值呢?我把numAvg改成double并初始化它,我把num1改成double。Idk我正在做什么,我刚刚开始编码numAvg
需要加倍。您需要将除法转换为double,因为您使用的所有值都是整数:double numAvg=((double)(num1+num2+num3+num4))/4
但是现在numAvg的输出需要没有小数,却有小数,所以最初的问题是什么?如果不使用double(即,numAvg
的类型为int
,并且不对double
执行任何强制转换),则只会得到整数值,这似乎是您想要的,但不是您最初要求的。