2013-03-21 2 views
2

Я работаю над изменением своего секвенсора Фибоначчи, чтобы цифры после достижения 100-го термина не обертывались и не становились отрицательными. Как я могу использовать BigInteger в этом коде, который я написал:Как использовать BigInteger с массивом?

package me.kevinossia.mystuff; 

import java.util.Scanner; 

public class FibonacciDisplayer 
{ 
public static void main(String[] args) 
{ 

    Scanner input = new Scanner(System.in); 
    int total; 
    System.out.print("This is a Fibonacci sequence displayer.\nHow many numbers would you like it to display?"); 
    total = input.nextInt(); 
    long[] series = new long[total]; 
    series[0]=0; 
    series[1]=1; 

    for(int i=2;i<total;i++) 
    { 
     series[i]=series[i-1] + series[i-2]; 
    } 
    for(int j=0; j<total; j++) 
    { 
     System.out.print(series[j] + "\n"); 
    } 
    input.close(); 
} 
} 

Я искал Google высоко и низко, и я не могу найти ничего конкретного в моем случае.

+0

UH ... так что используйте 'BigInteger' вместо' long'? – dmon

+0

Итак, прочитали ли вы [документы] (http://docs.oracle.com/javase/1.4.2/docs/api/java/math/BigInteger.html)? –

+0

* «Я искал google высоко и низко, и я не могу найти ничего конкретного в моем случае». *. Что вы искали? Я уверен, что если вы искали BigInteger, вы бы нашли много примеров о том, как их использовать ... –

ответ

4

Если вы уверены, что хотите использовать BigInteger, вам следует подумать о создании массива BigInteger. Так как

BigInteger[] series = new BigInteger[total]; 
series[0]=BigInteger.ZERO; 
series[1]=BigInteger.ONE; 

and in loop do 
series[i] = series[i-1].add(series[i-2]) 

Смотреть этот add API

+1

Большое спасибо, если не знаком с ZERO и ONE. Я видел их на джавадоках, но он не сказал, кто они, или, по крайней мере, я этого не видел. –

+1

см. Это http://docs.oracle.com/javase/1.4.2/docs/api/java/math/BigInteger.html#ONE – Saurabh

+2

@KevinOssia Если вы не знакомы с этим, просто поместите BigInteger.valueOf (0L); или BigInteger.valueOf (1L) должен дать тот же результат –

1

Если общая также BigInteger, то

BigInteger total = new Biginteger("1000000000000000"); 
BigInteger[] series = new BigInteger[total.intValue()]; 
series[0]=BigInteger.ZERO; 
series[1]=BigInteger.ONE; 
series[i] = series[i-1].add(series[i-2])` 
Смежные вопросы