0

创建一个读取整数 (NUM) 的 java 程序,并使用除法和余数/模运算符确定它的倒数。如果最后一位数字为零,则在反转数字之前将其替换为一 (1)。还输出所有数字的总和。

import java.util.*;

public class Main {
    static int replace(int number){
        if (number == 0)
            return 0;
        int digit = number % 10;

        if (digit == 0)
            digit = 1;

        return (number/10) * 10 + digit;
    }

    static int Convert(int number){
        if (number == 0)
            return 0;
        else
        return replace(number);
    }

    public static void main(String[] args) {
        int number;
        Scanner kb = new Scanner(System.in);

        System.out.print("Enter the number : ");
        number = kb.nextInt();
        System.out.println("replace:"+replace(number));
        int a, m = 0, sum = 0;

        do{
            a = replace(number) % 10;
            m = m * 10 + a;
            sum = sum + a;
            number = replace(number) / 10;
        }
        while( replace(number) > 0);

        System.out.println("Reverse:"+m);
        System.out.println("Sum of digits:"+sum);
    }
}

目前问题发生在反转数字,因为它也替换了数字的最后一位,这不应该发生。

当前程序的输入/输出

输入号码:2300

替换:2301

反面:1132

数字总和:7

4

1 回答 1

1

改为这样做

import java.util.*;

public class Main {
    static int replace(int number){
        if (number %10 == 0)
            return number += 1;
        return number;
    }

    static int Convert(int number){
        if (number == 0)
            return 0;
        else
            return replace(number);
    }

    public static void main(String[] args) {
        int number;
        Scanner kb = new Scanner(System.in);

        System.out.print("Enter the number : ");
        number = kb.nextInt();
        int a = 0, m = 0, sum = 0;

        number = replace(number);
        System.out.println("replace:" + number);

        do{
            a = number %  10;
            m = m * 10 + a;
            sum = sum + a;
            number /= 10;
        }
        while( number > 0);

        System.out.println("Reverse:"+m);
        System.out.println("Sum of digits:"+sum);
    }
}

由于您替换数字的方式,您的代码根本上是错误的。

所做的更改:

  1. 更改了替换算法(您不能将所有 0 值更改为 1,这是错误的以及为什么您得到错误的值)
  2. 在进入循环之前替换数字。(您不需要在 3 个不同的地方替换循环的每次迭代)

预期输出:

输出

于 2020-05-05T02:41:19.530 回答