2015-01-11 5 views
0

Я выбираю некоторые цифры из большого числа. Я сохраняю номер в строке, а затем сохраняю каждый символ в качестве подмассива. Это то, что у меня есть до сих пор (я еще не закончил). Но когда этот код работает, System.out.print(v[0]) возвращает «55». Я не понимаю, почему. Печать любого другого возвращает аналогичные (по-видимому) случайные два числа.Ошибка Java - .charAt() возвращает два символа в строке чисел

Спасибо!

public class P432 { public static void main(String[] args) { 

String x = "73167176531330624919225119674426574742355349194934"+ 
"96983520312774506326239578318016984801869478851843"+ 
"85861560789112949495459501737958331952853208805511"+ 
"12540698747158523863050715693290963295227443043557"+ 
"66896648950445244523161731856403098711121722383113"+ 
"62229893423380308135336276614282806444486645238749"+ 
"30358907296290491560440772390713810515859307960866"+ 
"70172427121883998797908792274921901699720888093776"+ 
"65727333001053367881220235421809751254540594752243"+ 
"52584907711670556013604839586446706324415722155397"+ 
"53697817977846174064955149290862569321978468622482"+ 
"83972241375657056057490261407972968652414535100474"+ 
"82166370484403199890008895243450658541227588666881"+ 
"16427171479924442928230863465674813919123162824586"+ 
"17866458359124566529476545682848912883142607690042"+ 
"24219022671055626321111109370544217506941658960408"+ 
"07198403850962455444362981230987879927244284909188"+ 
"84580156166097919133875499200524063689912560717606"+ 
"05886116467109405077541002256983155200055935729725"+ 
"71636269561882670428252483600823257530420752963450"; 

int[] v = new int[1000]; 

for (int g=0; g<1000; g++) 
{ 
    v[g] = x.charAt(g); 
} 

System.out.print(v[0]); 
}} 
+9

Вы преобразовали символ '7' в значение ascii int 55, просто измените массив v на char []. – JimW

+1

Попробуйте изменить 'v' на' char [] 'массив и посмотреть, что произойдет. Затем вы также увидите, что вы можете изменить весь свой код на 'char [] v = x.toCharArray();'. –

+0

@BoristheSpider НЕ ASCII VALUE; блок кода UTF-16 (который также является кодовой точкой Юникода для кодовых точек внутри BMP) – fge

ответ

1

Как сказал Джим, вы должны изменить массив быть char вместо int.

Кстати, вы можете использовать v.length вместо числа 1000 в цикле for.

.length возвращает длину (размер) массива (в этом случае 1000), поэтому, если вы захотите изменить размер массива в будущем, вам не нужно будет менять условие цикла for.