2016-06-06 14 views
0

Ich versuche, die Variable 'c' durch 2 (in 'd' gespeichert) zu teilen. Aus irgendeinem Grund passiert das nicht. Ich überhole gerade 10 und 2 für die Eingabe.Warum funktioniert die Funktion divide() nicht in Java BigInteger?

import java.util.*; 
import java.lang.*; 
import java.io.*; 
import java.math.BigInteger; 

class Ideone 
{ 
    public static void main (String[] args) throws java.lang.Exception 
    { 
    Scanner sc = new Scanner(System.in); 
    BigInteger a = new BigInteger(sc.next()); 
    BigInteger b = sc.nextBigInteger(); 
    BigInteger d = new BigInteger("2"); 
    System.out.println(d); 

    BigInteger c = a.subtract(b); 
    c.divide(d); 
    System.out.println(c); 
    a.subtract(c); 

    System.out.println(a); 
    System.out.println(c); 
    } 
} 

Jede Hilfe wäre willkommen. Danke im Voraus!

Antwort

4

Sie vergessen, dass BigInteger unveränderlich ist. Das bedeutet, dass a.divide(b)sich nicht ändert a es zurückgibt das Ergebnis der Berechnung.

Sie benötigen a = a.divide(b) oder ähnliches.

BigInteger a = new BigInteger(sc.next()); 
    BigInteger b = sc.nextBigInteger(); 
    BigInteger d = new BigInteger("2"); 
    System.out.println(d); 

    BigInteger c = a.subtract(b); 
    // HERE! 
    c = c.divide(d); 
    System.out.println(c); 
    // HERE! 
    a = a.subtract(c); 

    System.out.println(a); 
    System.out.println(c); 
+0

Vielen Dank, das löst es. –

3

BigInteger ist unveränderlich. Sie erhalten das Ergebnis c.divide(d); als Rückgabewert, den Sie in Ihrem Code wegwerfen.