нужна помощь с parseInt - PullRequest
0 голосов
/ 13 марта 2010

как я могу получить, например, целое число codeInt = 082 из String code = 'A082' я пробовал это:

int codeInt = Integer.parseInt(code.substring(1,4));

и я получаю codeInt = 82, он оставляет первые 0, но мне нужен полный код '082'.

Я думал о parseInt(String s, int radix), но я не знаю, как.

любая помощь будет оценена.
спасибо.

Ответы [ 4 ]

2 голосов
/ 13 марта 2010

Целое число просто хранит число.Числа 82 и 082 (и 0082 и 000000082 в этом отношении) абсолютно одинаковы (если вы не поместите их в исходный код на некоторых языках таким образом, вы получите ошибку компилятора) 1 .

Если вам крайне необходим начальный ноль, то вам следует либо оставить его в виде строки, либо отформатировать число соответствующим образом для вывода позже.


1 Срок оплатыдля дизайнеров C, имеющих оригинальную идею, что писать восьмеричные константы с предшествующим нулем было бы здорово.Как будто что-то вроде 0o123 было бы так сложно реализовать, когда вы уже получили 0xf00 ...

1 голос
/ 13 марта 2010

082 не является целым числом. Это строка, представляющая целое число 82. Если вы хотите, чтобы начальные нули оставались нетронутыми, вам придется работать со строками. Если вам нужно только печатать 082, вы можете использовать java.text.MessageFormat или System.out.format() или другие подобные решения для печати таким образом.

1 голос
/ 13 марта 2010

число 82 и 082 и 0082 математически совпадают и представлены одной и той же последовательностью битов. Вы не можете закодировать количество лидирующих нулей в int (хотя вы, безусловно, можете распечатать его в любом формате по вашему выбору).

Обратите также внимание, что число 082 отличается от Java-литерала 082, который является (недействительным) восьмеричным литералом.

int i = 010;
System.out.println(i); // this prints 8
0 голосов
/ 13 марта 2010

Если вы хотите 0000123, тогда вам нужно угрожать переменной как String вместо Integer. Просто: 123 равно 000123 и 0123 и 0000...1 billion zeros here...000123.

Но если вы просто хотите отобразить число с фиксированной длиной, используйте System.out.format().

...