Java 如何更改字符串中的数字?

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

我需要将给定字符串中的每个数字替换为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).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)
    输出:“我有$??!”???!"

  • 我想第三次尝试更聪明,但不起作用(

    我需要一些像这样工作的方法(ConvertDigitchArtPoint)(更改字符)

    这不是家庭作业)我只是在codewars.com上练习。所以有这样一个问题。
    [链接]:)

    您已经差不多完成了。补码计算为字符
    '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