2012-01-22 5 views
2

123456789という文字列があるとします。私はこの文字列を分割したいと思いますし、各番号は配列の別のスロットに入ります。分割する必要がないため、split()メソッドを使用することはできません。どうすればJavaでこれを達成できますか?数字の文字列をJavaの配列に変換します。各数字は異なるスロットです

+0

データが1桁であることは必須ですか? –

+0

はい、常に1桁になります。 –

+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とする必要があります。しかし、私はそれが必要ではないと思う。

EDIT:

私は思うが、私はあなたの質問を正しく理解していません。文字列のみを分割する場合は、この行のみを使用する必要があります。私は整数についても書いていますが、これも役に立つかもしれません。

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

+1です。注意すべき点は、文字列に数字だけが含まれていると確信できるならば、これで十分です: 'intarray [i] = array [i] - '0';'。 – Thomas

4

負でない整数だけを扱う場合は、toCharArray()メソッドが適しているはずです。文字列を配列として返します。

3

Stringクラスには、これを行うためのきちんとした方法があります(toCharArray())。

1

データが1桁であることは必須ですか?データが複数桁で表示される場合は、数値が複数桁の1桁であるかどうかを識別できませんか?例: それが12(12)ならば、すべての文字列が512ならば、512を5,1,2または5,12として表すかどうかをどのように識別しますか? それはあなたが文字列を作成しないように、次を使用することができます

+0

いいえ、文字列全体は1つの数字を表します –

+1

'int x = 123456789; char [] array = x.toString()。toCharArray(); int intarray [] =新しいint [配列。長さ]。 for(int i = 0; i

+0

コメントにその多くのコードを入れるのではなく、あなたの答えを編集することを提案します。そこではより良いフォーマットのコードを読むのは簡単でしょう。 – Thomas

2

のために動作します数字は一桁と非negetivesで、その後toCharArray()Stringのクラスになることを修正している場合。

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); 
関連する問題