2015-09-14 2 views
1
public class Ex14_11 { 
public static void main(String[] args){ 
    long b = Long.MAX_VALUE; 
    BigInteger a = new BigInteger(Long.toString(b)); 
    int count = 0; 
    BigInteger c = new BigInteger("5"); 
    BigInteger d = new BigInteger("6"); 
    BigInteger e = new BigInteger("0"); 
    while(count < 10){ 
     a.add(BigInteger.ONE); 
     if(a.remainder(d) == new BigInteger("0") || a.remainder(c) == new BigInteger("0")){ 
      System.out.print(a); 
      count++; 
     } 
    } 


} 

} Мне нужно найти первые десять чисел, которые больше Long.MAX_VALUE. Все номера должны иметь возможность разделить 5 или 6 точно.Почему существует бесконечная петля? о BigInteger.remainder()

ответ

2
a.remainder(d) == new BigInteger("0") 

Вы не можете использовать == для сравнения BigInteger с. Используйте a.remainder(d).equals(new BigInteger("0")) (и аналогичным образом для второго сравнения). Обратите внимание, что a == new Foo(...)всегда false на языке Java.

Кроме того, вы должны написать

a = a.add(BigInteger.ONE); 

... потому что вы пишете прямо сейчас, как

a + 1; 

... который не делает ничего, чтобы a.

+0

Могли бы добавить, что 'BigInteger.ZERO' является лучшей альтернативой' new BigInteger («0») '. – Bubletan

+0

Спасибо, ребята, очень !!! –

Смежные вопросы