2016-09-14 14 views
1

整数をint配列に変換するとき、たとえば123から{1,2,3}になると、値が{49,50,51}になります。 私のコードに何が問題なのかを見つけることができません。整数値が正しくない値を出力する

public class Test { 
    public static void main(String [] args) { 
     String temp = Integer.toString(123); 
     int[] newGuess = new int[temp.length()]; 
     for (int i = 0; i < temp.length(); i++) { 
      newGuess[i] = temp.charAt(i); 
     } 
     for (int i : newGuess) { 
      System.out.println(i); 
     } 
    } 
} 

出力:

+0

[Javaでint型配列に整数を変換する]の可能な複製(http://stackoverflow.com/questions/39482457/converting-an-integer-into-an-int-array-in-java) –

答えて

4

charAt(i)は、あなたの場合には例えば、整数のあなたUTF-16コード単位の値が得られます、UTF-16コード単位の値は1です。 値の整数表現を取得するには、から「0」(UTF-16コード単位の値48)を引きます。 i。

public class Test { 
    public static void main(String [] args) { 
     String temp = Integer.toString(123); 
     int[] newGuess = new int[temp.length()]; 
     for (int i = 0; i < temp.length(); i++) { 
      newGuess[i] = temp.charAt(i); 
     } 
     for (int i : newGuess) { 
      System.out.println(i - '0'); 
     } 
    } 
} 

出力:

+1

To 'charAt'はASCII値を返すのではなく、UTF-16コード単位である' char'値を返します。最初の128文字はいずれの方法も同じで、共通のラテンアルファベットをカバーしています。しかし、JavaはASCII文字列を一度も使用していません。 –

+0

あなたのコメントごとに編集されました。情報ありがとう。:) – Batty

1

temp.charAt(i)は基本的にあなたの文字を返しています。あなたはそれからIntegerの値を抽出する必要があります。

を使用でき

:あなたの興味として

newGuess[i] = Character.getNumericValue(temp.charAt(i)); 

出力

1 
2 
3 

コード

public class Test { 
    public static void main(String [] args) { 
     String temp = Integer.toString(123); 
     int[] newGuess = new int[temp.length()]; 
     for (int i = 0; i < temp.length(); i++) { 
      newGuess[i] = Character.getNumericValue(temp.charAt(i)); 
     } 
     for (int i : newGuess) { 
      System.out.println(i); 
     } 
    } 
} 
0

文字列の整数値として取得することです。 parse int Integer.parseInt()メソッドを使用します。これは整数として返されます。 例: int x = Integer.parseInt( "6");それはあなたが、必要に応じて行うことができ、私たちはきちんとすべてをパックすることができますミックスに少しのJava 8細かな点を追加するには整数6.

+0

'Integer.parseInt(" 123 ")'は '{1,2,3}' int配列ではなく整数 '123'を返します。 – Batty

1

を返します。

int i = 123; 
int[] nums = Arrays.stream(String.valueOf(i).split("")) 
     .mapToInt(Integer::parseInt) 
     .toArray(); 

ここでは、配列にストリームを取得します指定された整数の数値の文字列値を分割して作成された文字列。次に、それらをInteger#parseIntの整数値にIntStreamにマップし、最後にそれを配列にします。

関連する問題