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。但是我无法理解这里的行为。我想知道为什么这个解决方案不起作用。谢谢!
答案 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