我需要将每个数字替换为给定字符串s中 9 的补码
示例:我有235美元!-> 我有 $(9- 2 )(9- 3 )(9- 5 )!-> 我有 764 美元!
public static void playPass(String s, int shift) {
s.chars().map(i -> Character.isDigit(i) ? ____________?___________ : i)
.mapToObj(i -> (char) i).forEach(System.out::println);
}
是的,当然,我可以通过使用 for 循环来解决它,但我只是想了解更多关于 Streams 的信息。
所以我尝试过:
.map(i -> Character.isDigit(i) ? 9-i : i)输出:“我有 $ᅲᅱᅯ!”。这是因为 char 和用整数表示它之间的差异。.map(i -> Character.isDigit(i) ? Character.getNumericValue(9-i) : i)输出:“我有 $???!”。但是在这里我知道 i - 不是一个真正的值,它只是 ASCII 码。.map(i -> Character.isDigit(i) ? Character.getNumericValue(9-Integer.parseInt(String.valueOf(i))) : i)输出:“我有美元???!”
我想第三次尝试更聪明,但它不起作用(
我需要一些像这样工作的方法(convertDigitCharToInt)(更改字符)
i - char
i = Character.getNumericValue(9-convertDigitCharToInt(i));
这不是家庭作业))我只是在 codewars.com 练习。于是就有了这样的问题。[链接]:https ://codewars.com/kata/559536379512a64472000053/train/java )