2012-08-10 2 views
3

Я хочу разбить 4-значное целое число на 2. i.e конвертировать 1234 в две переменные; x=12 и y=34. Использование Java.Разделить 4-значное целое число в Java

+10

Добро пожаловать в переполнение стека! Мы рекомендуем [исследовать ваши вопросы] (http://stackoverflow.com/questions/how-to-ask). Если вы [попробовали что-то уже] (http://whathaveyoutried.com/), добавьте его в вопрос - если нет, сначала исследуйте и сначала попробуйте свой вопрос, а затем вернитесь. –

+2

Хорошо, что бы вы ни пожелали, все в порядке со мной. У вас есть вопрос? Вы что-то пробовали, и это не сработало, но вы слишком смущены, чтобы показать, что вы пробовали? –

+4

'a = 1234; x = a/100; y = a% 100; ' –

ответ

3
int a = 1234; 
int x = a/100; 
int y = a % 100; 
+1

Аккуратно, это довольно просто, эффективно и чисто. :) – WhyNotHugo

+0

@BryanH, о, извините. Были указаны типы. Нечего объяснять - есть две строки самоописательного кода. –

3
int four = 1234; 
int first = four/100; 
int second = four % 100; 

первый работает, потому что целые числа всегда округляется вниз, зачистки две последние цифры при делении на 100.

второй называется по модулю, делением на 100 и затем с остальным , это разделяет все цифры, кроме первых двух.

Допустим, у вас есть переменное число цифр:

int a = 1234, int x = 2, int y = 2; 
int lengthoffirstblock = x; 
int lengthofsecondblock = y; 
int lengthofnumber = (a ==0) ? 1 : (int)Math.log10(a) + 1; 
//getting the digit-count from a without string-conversion 

How can I count the digits in an integer without a string cast?

int first = a/Math.pow(10 , (lengthofnumber - lengthoffirstblock)); 
int second = a % Math.pow(10 , lengthofsecondblock); 

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

Math.abs(a); 
+0

Math.abs() для вашей последней строки? –

+0

@Brian, вы совершенно правы! Я изменил это. – Kostronor

1

Вы можете рассматривать его как строку и разделить его с помощью substring(), или как целое:

int s = 1234; 
int x = s/100; 
int y = s % 100; 

Если это первоначально ИНТ, я бы сохранить его как междунар и сделать выше.

Обратите внимание, что вам нужно подумать о том, что произойдет, если ваш вход не является четырехзначным. например 123.

-1
int num=1234; 
    String text=""+num; 
    String t1=text.substring(0, 2); 
    String t2=text.substring(2, 4); 
    int num1=Integer.valueOf(t1); 
    int num2=Integer.valueOf(t2); 
    System.out.println(num1+" "+num2); 
1

В случае, если вы хотите разделить один и тот же №:

int number=1234; 
int n,x,y;   //(here n=1000,x=y=1) 
int f1=(1234/n)*x; //(i.e. will be your first splitter part where you define x) 
int f2=(1234%n)*y; //(secend splitter part where you will define y) 

Если вы хотите, чтобы разделить число на (12 * х, 34 * у) {где х = множественный/фактор 12 & у = множественный/фактор из 34), то

1234 = F (X (12), у (34)) = F (36,68)

int number=1234; 
int n;  //(here n=1000) 
int x=3; 
int y=2; 
int f1=(1234/n)*x; //(i.e. will be your first splitter part where you define x) 
int f2=(1234%n)*y; //(secend splitter part where you will define y) 
Смежные вопросы