2015-06-20 12 views
5

Dato l'input seguente:Come assegnare un numero molto grande a BigInteger?

4534534534564657652349234230947234723947234234823048230957349573209483057 
1232400

Ho tentato di assegnare questi valori BigInteger nel modo seguente.

public static void main(String[] args) { 

     Scanner sc = new Scanner(System.in); 
     BigInteger num1 = BigInteger.valueOf(sc.nextLong()); 
     sc.nextLine(); 
     BigInteger num2 = BigInteger.valueOf(sc.nextLong()); 

     BigInteger additionTotal = num1.add(num2); 
     BigInteger multiplyTotal = num1.multiply(num2); 

     System.out.println(additionTotal); 
     System.out.println(multiplyTotal); 
    } 

Il primo valore è al di fuori dei confini di un numero lungo, e così ottengo la seguente eccezione:

Exception in thread java.util.InputMismatchException "principale": Per l'ingresso stringa : "4534534534564657652349234230947234723947234234823048230957349573209483057"

ho pensato che BigInteger aspetta un tipo lungo per l'uso con valueOf() metodo (come stat ed here). Come posso passare numeri estremamente grandi a BigInteger?

risposta

2

leggere il numero enorme come una stringa.

public static void main(String[] args) 
{ 
    Scanner in = new Scanner(System.in); 
    String s = in.nextLine(); 
    BigInteger num1 = new BigInteger(s); 

    s = in.nextLine(); 
    BigInteger num2 = new BigInteger(s); 

    //do stuff with num1 and num2 here 
}