Java—查找两个数字的平均值
我为这个问题的简单性道歉,但我有一个在线考试的测试问题,它要求我解决这个问题:Java—查找两个数字的平均值,java,math,average,Java,Math,Average,我为这个问题的简单性道歉,但我有一个在线考试的测试问题,它要求我解决这个问题: public class MathUtils { public static double average(int a, int b) { return (a+b)/2; } public static void main(String[] args) { System.out.println(average(2, 1)); } } 有两个我看不到的
public class MathUtils {
public static double average(int a, int b) {
return (a+b)/2;
}
public static void main(String[] args) {
System.out.println(average(2, 1));
}
}
有两个我看不到的测试类,我只需要解决它们返回的测试类错误消息。我得到的错误是:
整数除法错误答案
答案是1.5,这是一个双倍数字…所以我不确定这怎么可能是错误的数字。我想我正在失去它,所以如果有人指出我错过了什么,我将不胜感激 必须使用double进行非整数除法。整数除法返回一个整数,因此3/2=1,因为它的1.5被截断为1。 要获得双精度结果,必须使用double作为类型,或者将整数强制转换为double
公共静态双平均值(整数a、整数b){
return(a+b)/2.0;//将其设为2.0将使其成为双精度。
}
或
公共静态双平均值(整数a、整数b){
return(a+b)/(double)2;//将其设置为2.0将使其成为double。
}
这迫使它给你一个双精度返回,给出了预期的结果,你的代码给你一个错误,因为当你用3除以2时,你的答案是1.5,这是一个双精度而不是整数。因此,您需要对答案的结果使用显式转换,或者将方法类型更改为double's您必须将integer数据类型向上转换为double数据类型,如下所示
public class Main {
public static double average(int a, int b) {
return (double)(a+b)/2;
}
public static void main(String[] args) {
System.out.println(average(2, 1));
}
}
return(a+b)/2.0
(a
、b
和2
都是int
,因此是整数数学)。请尝试一个非整数除法,该除法精确地给出小数位数。。。@ElliottFrisch刚刚评论的那一个应该是一个很好的起点。@ElliottFrisch谢谢!这回答了你的问题吗@Olivia要知道2
并不特别,任何一个术语都应该是double
。例如返回((双)a+b)/2;或
返回(a+(双)b)/2;`甚至返回(a+b)/(double)2代码>您正在加宽整数结果。