2017-01-24 12 views
-2

Я пытаюсь преобразовать символы в конкретном индексе String в целое число.Преобразование индекса строки в целые числа

Это функция у меня есть:

public int[] digitsOfPi(int n) { 
    {    
     String piDigits = Double.toString(Math.PI); 
     int[] piArray = new int[n];   
     for (int i = 0; i < n; i++) 
     { 
      piArray[i] = Character.digit(piDigits.charAt(i), n);; 
     } 
     return piArray; 
    } 
} 

К сожалению, когда я протестировать эту функцию с digitsOfPi(3), я получил

[[email protected] 

Любая помощь будет оценена.

+0

Что вы используете для вывода его результата? –

+0

System.out.println (digitsOfPi (3)); – statsguyz

+0

Вы печатаете идентификатор объекта массива, цикл над массивом, чтобы печатать его элементы. –

ответ

0

Вы используете System.out.pritln(digitsOfPi(3) для получения элемента на 3-й позиции, но на самом деле его возвращения массива int

Так попробуйте использовать следующий фрагмент кода, вместо этого -

public static int digitsOfPi(int n) { 
     String piDigits = Double.toString(Math.PI); 
     char[] array = piDigits.toCharArray(); 
     return Character.getNumericValue(array[3]); 
    } 
+0

Спасибо, но мне определенно нужен этот метод для возврата массива int. – statsguyz

+0

@statsguyz теперь вы можете получить int от него – Razib

3

Использование Arrays.toString(arg)

System.out.println(Arrays.toString(digitsOfPi(3))); 

... для получения результата результата, такого как [1, 2, 3]

То, что вы напечатали, является ссылкой на массив, а не на его содержимое. Вот почему я сначала спросил о том, как вы выдаете результат.


Тхи подпись Character.digit() является (char ch, int RADIX). Таким образом, вы используете систему тернарных номеров или как ее называть. Более того, он возвращает -1, когда char ch не содержит действительного числа, это ваш случай 3.1415... is [invalid, invalid, 1]. Вам нужно использовать 10 в качестве аргумента и пропустить 2-ю позицию. Или вы можете просто сделать

piArray[i] = piDigits.charAt(i) - '0'; 
+0

Это не работает. Я получаю [-1, -1, 1]. – statsguyz

+0

То, что вы получили в массиве. Подождите, я посмотрю на собственно функцию –

+0

Угадайте, как ее решить во второй части ответа –