% Betreiber für BigInteger in java
Wie zu verwenden a%b
mit großen ganzen zahlen?
wie
...
BigInteger val = new BigInteger("1254789363254125");
...
boolean odd(val){
if(val%2!=0)
return true;
return false;
...
Eclipse sagt, dass der operator % ist nicht definiert für BigInteger.
Irgendwelche Ideen?
Werfen Sie einen Blick auf die
mod
Funktion in der BigInteger javadoc.InformationsquelleAutor Saendra | 2012-07-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie diese:
Oder als Benutzer Duncan schlug in einem Kommentar, wir können die if-Anweisung insgesamt etwa so:
Danke, habe vergessen die Ausrufezeichen.
Keine Notwendigkeit für eine if-Anweisung, nur
return !val.mod(new BigInteger("2")).equals(BigInteger.ZERO);
.Yep, du hast Recht. Mein 2012 selbst war nicht ganz erfahren genug, um zu erkennen, dass. Ich werde Bearbeiten Sie meine Antwort mit Ihrem Vorschlag. Danke!
Ich empfehle BigInteger.valueOf(2), diese gibt Ihnen auch ein Cache-Objekt.
InformationsquelleAutor jrad
Eine viel mehr effiziente Art und Weise ist, zu überprüfen, das Letzte bit. Wenn es
0
(akafalse
) die Zahl gerade, sonst ungerade.Auch seine weniger code-Zeilen.
InformationsquelleAutor David Grinberg
Ich würde die Methode Rest der Klasse BigInteger auf diese Weise:
Die Zuordnung ist aufgrund der Tatsache, dass BigInteger unveränderlich ist, so ist a nicht verändert werden, indem die Methode.
InformationsquelleAutor SamCle88
Verwenden, val.mod(2).
BigInteger ist ein Objekt. Sie können nicht verwenden von arithmetischen Operatoren auf Objekte, das funktioniert nur mit primitiven.
% funktioniert nur mit java.lang.Integer, denn das ist implizit umgewandelt (tatsächlich, es heißt ohne Verpackung), um int. Aber BigInteger kann nicht sein, ohne Verpackung. unboxing /baxing (das bedeutet, dass Objekt zu primitive /primitive Objekt-Konvertierung) funktioniert nur mit int, float, double, short und byte.
InformationsquelleAutor Polygnome
Als BigInteger ist eine Klasse, und nicht eine primitive*1, verwenden Sie nicht die Betreiber. Überprüfen Sie die Methoden für die BigInteger: http://docs.oracle.com/javase/1.5.0/docs/api/java/math/BigInteger.html#mod(java.math.BigInteger)
*1: Im Falle von Integer, Float, mithilfe von Operatoren können Sie, weil die JVM automatisch konvertiert das Objekt in seiner primitiven Wert (autoboxing)
InformationsquelleAutor SJuan76