Есть ли способ использовать BigInteger для итерации? - PullRequest
3 голосов
/ 26 января 2011

Имеет ли BigInteger только equals для сравнения?
Существуют ли замены для математических обозначений, таких как <(больше чем) или <(меньше)?^ Ответ! </p>

Теперь я хочу знать, есть ли способ использовать BigInteger в итерации, такие как while и for?

Ответы [ 3 ]

5 голосов
/ 26 января 2011

Вы можете использовать метод compareTo .

1 голос
/ 26 января 2011

Вы не можете использовать математические обозначения, на самом деле я тоже не привык бы использовать ==, я вполне уверен, что если они не использовали какой-то серьезный обман, он потерпит неудачу.

a = new BigInteger(500);

b = a;
if( a == b ) 
    will always be true

b=new BigInteger(500);
if( a == b )
    will never be true

if( a.equals(b) )
    will always work fine.

Java не является отличным языком для такого рода вещей - я действительно люблю Java, но в итоге у меня возникли большие проблемы с реализацией класса Complex, а затем с реализацией матрицы, которая может содержать сложный класс и манипулировать им.

Мое решение состояло в том, чтобы использовать Java для создания базовых классов, а затем использовать Groovy для создания классов, которые использовали базовые классы. Если вы следуете определенным шаблонам именования, вы можете использовать любые операторы в любом классе.

Или, если вы просто хотите возиться с большими числами, просто используйте groovy и даже не объявляйте тип для ваших переменных - он автоматически переведет их на все, что вам нужно.

0 голосов
/ 26 января 2011

Java-операторы предназначены только для работы с примитивными типами данных;они не действуют на занятиях.Поскольку BigInteger является классом, арифметические сравнения и операции можно выполнять только с помощью методов класса.

...