2012-01-22 4 views
2

123456789 문자열이 있다고 가정합니다. 이 문자열을 분리하고 각 숫자가 배열의 다른 슬롯에 들어가기를 원합니다. 분할 할 것이 없으므로 split() 메서드를 사용할 수 없습니다. 어떻게하면 자바에서이 작업을 수행 할 수 있을까요?숫자 문자열을 Java의 배열로 변환합니다. 각 숫자는 다른 슬롯입니다.

+0

데이터가 한자리 수임을 보증합니까? –

+0

예, 항상 한 자릿수입니다. –

+0

'toCharArray()'메소드는'String' 클래스 –

답변

6
int x=123456789; 
char[] array = x.toString().toCharArray(); 

int intarray[] = new int[array.length]; 
for (int i = 0; i < array.length; i++) { 
intarray[i] = Integer.parseInt(array[i]); 
} 

그리고이 후 intarray은 숫자 배열입니다. 정수가 음수 일 수있는 경우 절대 값을 가져와 동일한 연산을 수행 한 후 첫 번째 배열 값이 여러 개인 경우 -1을 입력해야합니다. 그러나 나는 그것이 필요하지 않다고 생각한다.

편집 :

나는 생각한다, 나는 당신의 질문을 제대로 이해하지 않습니다. 문자열 만 분리하려면이 줄만 사용해야합니다. 나는 정수에 대해서도 썼다.

string x="123456789"; 
char[] array = x.toCharArray(); 
+2

+1. 주의 할 점은 문자열에 숫자 만 포함되어 있다고 확신 할 수 있다면 충분합니다. intarray [i] = array [i] - '0';'. – Thomas

4

음수가 아닌 정수만 처리하는 경우 toCharArray() 메서드가 적합해야합니다. 문자열을 배열로 제공합니다.

1

데이터가 한 자리 수임을 보증합니까? 데이터가 여러 자릿수로 표시 될 수있는 경우 숫자 값이 여러 자릿수의 한 자릿수인지 여부를 식별 할 수 없습니까? 예 : 12 (12)이면 모든 문자열이 512 인 경우 512를 5,1,2 또는 5,12로 표시할지 여부를 어떻게 식별합니까? 이 숫자가 당신이

+0

아니요, 전체 문자열은 하나의 숫자 만 나타냅니다. –

+1

int x = 123456789; char [] array = x.toString(). toCharArray(); int intarray [] = 새로운 int [배열. 길이]; for (int i = 0; i

+0

많은 코드를 주석에 넣는 대신 답변을 편집하시는 것이 좋습니다. 더 나은 형식의 코드를 읽는 것이 더 쉬울 것입니다. – Thomas

2

당신은 문자열을 생성 방지하려면 다음 사용을 위해 작동 할 하나의 숫자와 String 클래스의 다음 toCharArray() 비 negetives 될 것으로 해결됩니다.

long x = x; 
ByteBuffer bb = ByteBuffer.allocate(18); 
if (x == 0) { 
    bb.put((byte) 0); 
} else { 
    while (x > 0) { 
     bb.put((byte) (x % 10)); 
     x /= 10; 
    } 
} 
int len = bb.position(); 
byte[] digits = new byte[len]; 
for (int i = 0; i < len; i++) 
    digits[i] = bb.get(len - i - 1); 
관련 문제