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您正在加宽整数结果。