Java (сотни, тысячи и т. Д.) - PullRequest
       17

Java (сотни, тысячи и т. Д.)

0 голосов
/ 15 августа 2010

Я хотел бы создать метод, который выводит 1000, если введенное число равно тысячам (например, 3458), 100, если введенное число равно сотням и так далее. Возможно ли это?

Ответы [ 6 ]

5 голосов
/ 15 августа 2010

Конечно, это возможно. Почему бы вам не опубликовать то, что вы пытались, и мы можем дать вам советы о том, как решить любые проблемы.

4 голосов
/ 15 августа 2010

Как сказал Стив, вероятно, хорошей идеей будет сначала немного попробовать, а затем обратиться к SO с конкретным вопросом (например, «я делаю X, это мой код, почему Y не происходит?» ).

Однако, в качестве небольшой подсказки, предполагая, что у вас есть чистый числовой ввод (т. Е. Это всегда будет просто поток чисел, без "," и т. П.), Вы можете фактически выполнить работу, используя только строки - нет необходимость работы с числовыми типами (int и т. д.) вообще ...

(Хорошо, подумав об этом, в конце может быть небольшая математика, чтобы получить конечный результат «100» или «1000» и т. Д., Но не намного.)

2 голосов
/ 25 августа 2010

Это не модно, а просто и читабельно

2 голосов
/ 25 августа 2010

Чтобы расширить то, что предлагал Yuval, если вас не волнует знак числа (то есть входные значения, скажем, +3456 и -3456 должны возвращать 1000), вы можете просто использовать абсолютное значение ввода:

return Math.pow(10, Math.floor(Math.log( Math.abs(n) ) / Math.log(10))); // for input n

И если вы хотите обработать все возможные числовые значения, вы также можете обработать нулевое значение перед выполнением вычисления:

if (n == 0) // for input n
    return 0;
return Math.pow(10, Math.floor(Math.log( Math.abs(n) ) / Math.log(10))); // for input n

log (0) не определено, поэтому вы не хотите выполнять вычисления, если n == 0. Вы получите забавный ответ (если вы даже получите ответ ... Я не запускал этот код ). Учитывая описание проблемы, которую вы предоставили, я думаю, что возвращение 0, когда ввод 0, имеет смысл. Ноль не в тысячах, сотнях, десятках или единицах - среди целых чисел, это его собственная категория. Таким образом, вы можете вернуть 0. Или вы можете сгенерировать исключение.

1 голос
/ 25 августа 2010

Можно использовать цикл, чтобы избежать использования двойной и возможной проблемы округления (если преобразовать результат в int).
Переменная цикла начинается с 1 и имеет значение , умноженное на 10 за каждый проход, в то время как (следующий) результат меньше числа ввода.
Отрицательный и нулевой ввод требуют специальной обработки.

1 голос
/ 15 августа 2010

Простая математика:

Math.pow(10, Math.floor(Math.log(n) / Math.log(10))) // for given n
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...