Не могу разобрать символы из строки в Java - PullRequest
0 голосов
/ 18 сентября 2018
import java.util.Scanner;

public class Out {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        String[] arr = new String[n];
        int result = 0;
        for(int i = 0; i < n; i++) {
            arr[i] = input.next();
            System.out.println(arr[i]);
            System.out.println(Double.parseDouble(arr[i].replace(Character.toString(arr[i].charAt(arr[i].length() - 1)), "")));
            System.out.println(Double.parseDouble(Character.toString(arr[i].charAt(arr[i].length() - 1))));
            result += Math.pow(Double.parseDouble(arr[i].replace(Character.toString(arr[i].charAt(arr[i].length() - 1)), "")), Double.parseDouble(Character.toString(arr[i].charAt(arr[i].length() - 1))));


        }
        System.out.println(result);

    }

}

Этот код должен получить строку (например, 567) и поднять 56 до степени 7. Он НЕ работает только для случая, когда у меня 212. Я знаю, что это очень легко с arr [i] / 10 и обр [i]% 10.Но я не могу понять поведение здесь.Я хотел знать, почему это решение не работает.Спасибо!

1 Ответ

0 голосов
/ 18 сентября 2018

String.replace здесь не будет работать.Эта функция заменяет все вхождения символа в строке.

Таким образом, для числа, подобного 212, "212" .replace ("2", "") приведет к "1".

См. https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#replace-char-char-

Рассмотримиспользуя подстроку:

String s = "212"
System.out.println(s.substring(0, s.length() - 1)); //prints 21
System.out.println(s.substring(s.length()-1)); //prints 2
...