Ich versuche den ganzzahligen Mittelpunkt zwischen zwei ganzen Zahlen zu finden. Zum Beispiel wäre Mitte (2,3) 2, nicht 2,5. Ich hatte die unten, die gut funktioniert, aber ich würde gerne mit Zahlen von MIN_VALUE bis MAX_VALUE arbeiten, und dies verursacht Überlauf so völlig falsche Ergebnisse.Java findet den Mittelpunkt zwischen zwei Ganzzahlen
public static int mid(int x, int y){
int midpoint = (x+y)/2;
return midpoint;
}
Ich habe jetzt bekam:
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;
}
Dies ist für Werte von x und y von 0 bis Integer.MAX_VALUE zu funktionieren scheint, ist jedoch falsch, wenn x eine negative Zahl ist und i‘ Ich bin mir nicht sicher, warum das so ist?
Es funktioniert auch nicht, wenn 'x + y> MAX_VALUE'. – molbdnilo
Do mit 'double' und dann zurück in int konvertieren? Werben Sie für die '' '' '' '' '' '' '' '' '' '' '' '' '' Ersten? – markspace
Fehlerhaftes Verhalten bei negativer Ganzzahl kann nicht reproduziert werden. Das einzige, was ich überprüfen konnte, ist, dass dieser Code von Überlauf-Problemen betroffen ist. – Paul