私は2つの整数間の整数の中間点を見つけようとしています。たとえば、mid(2,3)は2.5ではなく2になります。私はうまく動作する以下を持っていましたが、私はMIN_VALUEからMAX_VALUEまでの数値で作業したいと思います。 xが負の数の場合はJavaは2つの整数間の中点を見つける
これにInteger.MAX_VALUEまで0からxとyの値のために働くようだpublic static int mid(int x, int y){
int low = Math.min(x, y);
int high = Math.max(x, y);
int midpoint = (low + high) >>> 1;
return midpoint;
}
、しかし間違っていると私は」:
public static int mid(int x, int y){
int midpoint = (x+y)/2;
return midpoint;
}
私は今持っていますなぜそれが分かりませんか?あなたが長い間に変換して回避し、バックアップすることができます
'x + y> MAX_VALUE'の場合にも動作しません。 – molbdnilo
'double'でそれを行い、intに変換し直しますか? 'int'sを' long's'sを最初に宣伝しますか? – markspace
負の整数で誤った動作を再現できません。私が確認できる唯一のことは、このコードがオーバーフロー問題の影響を受けることです。 – Paul