2016-08-27 6 views
-2

что я хочу сделать, это взять строку чисел типа «8675309», а затем сделать некоторую математику на основе разных цифр из строки. я был бы рад получить 8, 6, 7, 5, 3, 0, 9, а затем использовать индексы, но они, похоже, дают странные числа (например, 51). я просто хочу завершить работу myArray [0] + myArray [3] = output (этот пример будет 8 + 5 = 13)int [] from String или int [] from char []

У меня есть 6 книг на Java, и ни одна из них не охватывает это. 6 часов в Интернете (google, stackoverflow, youtube, другие), и я нигде не могу это найти. - Независимо от того, как я ищу, я получаю результаты всего, кроме.

из массивов, которые уже заселенных, в строки уже разграничены, чтобы отбросить все, кроме чисел из строки, и т.д. ...

я попытался с помощью/модификации, что я нашел, и лучшее, что я могу придумать с затмением кричит на меня, что невозможно преобразовать char в int.

String str = cn; 
    char[] charArray = str.toCharArray(); 

    String number = String.valueOf(cn); 
    int[] digits1 = number.toCharArray(); 

    int newInt = charArray[0]; 
    System.out.println(newInt); 

"Исключение в потоке "главный" java.lang.Error: Нерешенные проблемы компиляции: Несоответствие типов: невозможно преобразовать из полукокса [] в Int []"

+0

Вы можете назначить 'char'' int', но вы не можете назначить 'char []' 'int []'. Вы читали * свои 6 книг? – Kayaman

+1

'int [] digits = str.chars(). Map (n -> n - '0'). ToArray();' –

+0

@TimBiegeleisen Вау, очень хороший улов, обнаруживающий дубликат много лет назад! Я уже забыл, что ответил на этот вопрос (и мой старый ответ тоже был устаревшим). Спасибо! – dasblinkenlight

ответ

2

Вы можете преобразовать один char, представляющий десятичную цифру до int по телефону Character.digit(myChar, 10). Вызовите этот метод в цикле для результатов, полученных от toCharArray() построить нужный массив из int с:

String str = cn; 
char[] charArray = str.toCharArray(); 
int[] digits = new int[charArray.length()]; 
for (int i = 0 ; i != digits.length() ; i++) { 
    digits[i] = Character.digit(charArray[i], 10); 
} 
0

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

String text = "8675309"; 
    char[] characters = text.toCharArray(); 
    List<Integer> digits = new ArrayList<>(); 

    for(char character : characters) { 
     digits.add(Character.getNumericValue(character)); 
    } 

Вы можете получить доступ к каждой из цифр путем итерации по списку.