2016-12-15 15 views
0

Я попытался построить факторный генератор из слов, но каждый раз, когда я ввожу некоторые большие числа, это делает мои числа отрицательными.Как применить long L при использовании имен переменных в Java?

Я понял, что должен использовать long с идентификатором (L). Я применил его к инициализации long, но это не исправить. Я думаю, что проблема находится где-то здесь:

for (int j = 1 ; j <= wordLength; j++) { 
    temp *= j; 
}  

как Поручаю L к temp поэтому оставляет достаточно места для количества, чтобы поместиться в?

+0

Какое сообщение об ошибке? что такое temp? Что такое значение wordLength? –

+2

Факториал становится очень быстрым. Вместо этого используйте BigInteger: https://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html – orip

+0

Спасибо, что помогли мне! – Bribri

ответ

1

l не применяется к именам переменных. Конечно, Вы можете сделать это, чтобы включать в себя тип переменной в его имени, но это скорее вопрос стиля, чем что-либо другое, например:

long avariableL = someLong; 

for(int i = 0; i < 10; i++) 
    avariableL *= i; 

l используется только для констант в коде, как

long someLong = 123456789L; 

Переменные не изменяют магические изменения во время выполнения кода. Вам придется объявить переменную как можно дольше.

+0

Хорошо, но я сделал это, я объявил свою переменную следующим образом: long temp = 1L; – Bribri

+0

@Bribri, вероятно, вы просто использовали слишком большое значение. 'long' только расширяет диапазон примерно до квадрата диапазона' int'. А факториалы растут довольно быстро. '21!' Уже превышает ограничения 'long '. Если вы хотите использовать большие числа, вам нужно переключиться на «BigInteger». – Paul

+0

Спасибо, что посмотри! – Bribri