2015-07-16 3 views
4

Допустим у меня есть следующий номер:Java - отдельный номер в 3-х частей

36702514 

Я хочу, чтобы отделить вышеуказанное количество в 3-х частей, что составляет 36, 702, 514.
Ниже приведен код, который я проверено:

int num = 36702514; 
int num1 = num.substring(0, 2); 
int num2 = num.substring(2, 3); 
int num3 = num.substring(5, 3); 

Я пишу правильно?

+0

modulo 1000 или 100 будет самым простым способом. – SomeJavaGuy

+2

Давайте скажем, если бы вы попробовали что-нибудь, прежде чем спрашивать? – SMA

+0

@KKLMichael Мы говорим об этом конкретном примере или любом количестве, разбитом на любое количество комбинаций перестановок? Если вы имеете в виду более поздний, одним быстрым способом сделать это было бы использование манипуляции 'String'. – CKing

ответ

7
List<String> myNumbers = Arrays.asList(
    NumberFormat.getNumberInstance(Locale.US).format(36702514).split(",")); 

Мое решение строит разделенных запятыми String входа в США локали:

36,702,514 

Это String затем расщепленного запятой в дать искомые три части в исходной проблеме.

List<Integer> numbers = new ArrayList<>(); 
Integer n = null; 
for (String numb : myNumbers) 
{ 
    try 
    { 
     n = new Integer(numb); 
    } 
    catch (NumberFormatException e) 
    { 
     System.out.println("Wrong number " + numb); 
     continue; 
    } 
    numbers.add(n); 
} 
System.out.println(numbers); 
+1

Я проголосовал за ваш ответ, потому что он чист и краток. Единственное, что мне не нравится, это то, что вы в конечном итоге получаете набор строк, которые потенциально должны быть преобразованы в числовые. –

+1

Я также голосовал, потому что это метод, который вы можете использовать, если String подходит для вас. Я хотел бы попросить вас немного рассказать об этом и объяснить, как это работает используя его, он может понять, что он делает. – Gemtastic

5

Вам необходимо использовать substring() на Java String, а не примитив int. Преобразование числа в String с помощью String.valueOf():

int num = 36702514; 
String numString = String.valueOf(num); 

int num1 = Integer.parseInt(numString.substring(0, 2)); 
int num2 = Integer.parseInt(numString.substring(2, 5)); 
int num3 = Integer.parseInt(numString.substring(5, 8)); 
+0

Is 'substring()' возвращает значение 'int' – Satya

+0

, но' substring() 'return' String' –

+0

Извините ... Я сейчас на сотовом телефоне :-( –

-3

Am I writing correct?

Нет, это не так, вы будете получать компиляции ошибки времени, как

error: int cannot be dereferenced 

num является примитивным здесь, Вы не можете вызвать метод примитивных.

Правильный путь:

int no = 36702514; 
String num=String.valueOf(num); 
int num1 = Integer.parseInt(num.substring(0, 2)); 
int num2 = Integer.parseInt(num.substring(2, 3)); 
int num3 = Integer.parseInt(num.substring(5, 3)); 
0

Вы можете использовать логику модуль для извлечения цифр из целого числа.

int num1 = num % 10; 
int num2 = num/10 % 10; 
int num3 = num /100 % 10; 

System.out.print(num1); 
System.out.print("\n" + num2); 
System.out.print("\n" + num3); 

Редактировать: Сохранить цифры в массиве вместо отдельных переменных.

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