Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取数字小于最小整数值的算术平均值?_Java_C++_Average - Fatal编程技术网

Java 获取数字小于最小整数值的算术平均值?

Java 获取数字小于最小整数值的算术平均值?,java,c++,average,Java,C++,Average,我有这个任务,我需要找到平均2整数。 这是我的密码: public class AverageNumber { public int average(int a, int b) { if (a == Integer.MIN_VALUE && b == Integer.MIN_VALUE) { return Integer.MIN_VALUE; } else if (a < 0 || b < 0) { return (a +

我有这个任务,我需要找到平均2整数。 这是我的密码:

public class AverageNumber {
  public int average(int a, int b) {
    if (a == Integer.MIN_VALUE && b == Integer.MIN_VALUE) {
      return Integer.MIN_VALUE;
    } else if (a < 0 || b < 0) {
      return (a + b)/2;
    } 
    return (a+b)>>>1;
  }
}`
我需要一些关于超出范围=Integer.MIN_值的数字的帮助。而且我不能用长字体。

听起来像家庭作业:-) 这更像是一个数学问题,而不是一个编程问题


计算两者之间的差值,将差值的一半加到“较小”的数字上。对于负数,您必须更加详细地解释,但这样您就不会“溢出”整数。

当您的数据(以及依赖于它的计算)无法放入提供给您的存储空间(这里就是这种情况)时,您需要编写或使用(许多免费提供的)“大数”库之一。鉴于你的陈述,我不能使用长类型,我希望你在一个类中,你被期望形成自己的有限大数函数。堆栈溢出不会为您编写代码,但如果您试图编写自己的代码并遇到麻烦,您可能会在发布自己为解决问题所做的代码和努力后获得帮助。这是家庭作业吗?您只能使用
int
s进行计算吗?实际上,鉴于您在这里尝试执行的操作范围有限,因此不需要复杂的库。虽然我们通常认为执行平均值的方法是将两个值相加,然后将结果除以2,但这不起作用,因为无法安全地将两个输入相加。在不透露太多的情况下,您可以重写公式,这样您就不必添加两个会溢出int的值。差异仍然会溢出。最终,我通过使用这些按位操作做到了这一点:(a>>1)+(b>>1)@MaxShpak-你可能刚刚做了
a/2+b/2
,然后…是的,我知道。但优先级是按位操作:)
Input: -2147483648, -2
Expected: -1073741825
Actual: "1073741823"