Java 如何更改字符串中的数字?
我需要将给定字符串中的每个数字替换为9的补码s 示例:我有$235!->我有美元(9-2)(9-3)(9-5)!->我有764美元Java 如何更改字符串中的数字?,java,lambda,char,java-stream,Java,Lambda,Char,Java Stream,我需要将给定字符串中的每个数字替换为9的补码s 示例:我有$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).forEac
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循环来解决这个问题,但我只是想了解更多关于流的知识
所以我试过:
.map(i->Character.isDigit(i)?9-i:i)
输出:“我有$ᅲᅱᅯ!". 这是因为字符和用整数表示字符之间存在差异
.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)
输出:“我有$??!”???!"
[链接]:)您已经差不多完成了。补码计算为字符
'9'
和当前字符数字之间的差值加上移位'0'
,得到一个新字符
以下代码可以正常工作:
publicstaticvoidplaypass(字符串s){
s、 chars()
.map(i->Character.isDigit(i)?'9'-i+'0':i)
.mapToObj(i->(char)i)
.forEach(系统输出::打印);
}
测试:
请阅读我想知道如果你被告知答案是
9-I
。这不是家庭作业)我只是在codewars.com上练习。所以有这样一个问题。(链接:)@弃置密码它不起作用,我已经试过了“家庭作业”“和实践编码本质上是一样的。。。当他们是问题的主题时。你需要向我们展示你所做的,并提出更具体的问题。。。而不仅仅是要求我们给你一个解决方案。
i - char
i = Character.getNumericValue(9-convertDigitCharToInt(i));
playPass("I have $235"); // I have $764