【发布时间】:2021-02-16 09:16:50
【问题描述】:
我需要用给定字符串 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)
【问题讨论】:
-
如果你被告知答案是
9-i,我想知道你是否知道如何完成这个。 -
这不是家庭作业))我只是在 codewars.com 练习。所以出现了这样的问题。(链接:codewars.com/kata/559536379512a64472000053/train/java)
-
@AbandonedCrypt 不行,我已经试过了
-
“家庭作业”和练习编码本质上是一回事……当它们是 StackOverflow 问题的主题时。您需要向我们展示您所做的事情并提出更具体的问题……而不是仅仅要求我们为您提供解决方案。
标签: java lambda char java-stream