0

问题:给定一个数字 N。任务是完成函数 convertFive(),它将数字中的所有零替换为 5 我的代码| 请验证任何帮助我

public class Replaceall0swith5 {
    public static void convertFive(int n) {
    //add code here.
        int digit, sum = 0;
        while (n > 0) {
            digit = n % 10;
            if (digit == 0) {
                digit = 5;
            }
            sum = sum * 10 + digit;
            n = n / 10;
        }
        System.out.print(n + " All O's replaced with 5 " + sum);
    }

    public static void main(String[] args) {
        Replaceall0swith5.convertFive(1004);
    }
}
4

3 回答 3

0

您使用模数替换是否有原因?

    public class Replaceall0swith5 {
        public static void convertFive(int n) {
            int replacedValues = Integer.valueOf(String.valueOf(n).replace("0","5"));
            System.out.print(n + " All O's replaced with 5 " + replacedValues);
    
        }
    
        public static void main(String[] args) {
            Replaceall0swith5.convertFive(1004);
        }
    }
于 2021-10-11T03:56:54.827 回答
0

这与反转数字基本相同,只是它将 0 更改为 5。

while (n > 0) {
        digit = n % 10;
        if (digit == 0) {
            digit = 5;
        }
        sum = sum * 10 + digit;
        n = n / 10;
    }

convertFive(1004)给出 4551 而不是 1554。
digit = 4 : sum = 0 * 10 + 4 = 4
digit = 0 : sum = 4 * 10 + 5 = 45
digit = 0 : sum = 45 * 10 + 5 = 455
digit = 1 : sum = 455 * 10 + 1 = 4551
简单的解决方案是将其转换为字符串并将 0 替换为 5。@Fmxerz 已经为此提供了解决方案。
或者如果你要这样做,你可以使用 Math.pow 函数。

import java.lang.Math;
....

public static void convertFive(int n) {
    int i = 0;
    int digit, sum = 0;
    while (n > 0) {
        digit = n % 10;
        if (digit == 0) {
            digit = 5;
        }
        sum = sum + digit*(int)Math.pow(10,i);
        n = n / 10;
        i++;
    }
    System.out.print(n + " All O's replaced with 5 " + sum);
}
于 2021-10-11T04:00:02.797 回答
0

试试这个。

public static void convertFive(int n) {
    int sum = 0;
    for (int rank = 1; n > 0; n = n / 10, rank *= 10) {
        int digit = n % 10;
        if (digit == 0)
            digit = 5;
        sum = sum + digit * rank;
    }
    System.out.print(n + " All O's replaced with 5 " + sum);
}
n 数字
1004 1 0
100 4 1 4
10 0 -> 5 10 54
1 0 -> 5 100 554
0 1 1000 1554
于 2021-10-11T04:25:29.693 回答