无法解析Java中字符串中的字符

时间:2018-09-18 13:41:37

标签: java string parsing character charat

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非常简单和arr [i]%10。但是我无法理解这里的行为。我想知道为什么这个解决方案不起作用。谢谢!

1 个答案:

答案 0 :(得分:3)

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
相关问题