0

16桁で満たされた文字列を、各インデックスが文字列内のそれぞれのインデックスの数字を保持するintの配列に変換しようとしています。文字列内の個々の int に対して計算を行う必要があるプログラムを作成していますが、試したすべての方法が機能していないようです。ユーザーが数字を入力しているため、文字で分割することもできません。

これが私が試したことです。

//Directly converting from char to int 
//(returns different values like 49 instead of 1?)    
//I also tried converting to an array of char, which worked, 
//but then when I converted
//the array of char to an array of ints, it still gave me weird numbers.

for (int count = 0; count <=15; count++)
{
   intArray[count] = UserInput.charAt(count);
}

//Converting the string to an int and then using division to grab each digit,
//but it throws the following error (perhaps it's too long?):
// "java.lang.NumberFormatException: For input string: "1234567890123456""

int varX = Integer.parseInt(UserInput);
int varY = 1;
for (count=0; count<=15; count++)
{
    intArray[count]= (varX / varY * 10);
}

どうすればいいですか?

4

2 に答える 2

5

これはどう:

for (int count = 0; count < userInput.length; ++count)
   intArray[count] = userInput.charAt(count)-'0';
于 2012-05-13T11:30:36.323 に答える
-1

ここで少し紛らわしいのは、int と char を相互に解釈できることだと思います。文字「1」の int 値は、実際には 49 です。

ここに解決策があります:

for (int i = 0; i < 16; i++) {
    intArray[i] = Integer.valueOf(userInput.substring(i, i + 1));
}

substring メソッドは、文字列の一部を文字ではなく別の文字列として返します。これは int に解析できます。

いくつかのヒント:

  • <= 15 を < 16 に変更しました。これは慣例であり、実際に何回ループを繰り返すかがわかります (16)
  • 「count」を「i」に変更しました。別のコンベンション...
于 2012-05-13T11:46:34.453 に答える