当前位置: 首页 > 知识库问答 >
问题:

使用do-while反转数字

娄振
2023-03-14
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);
    }
}

反向:1132

数字总和:7

共有1个答案

卢开济
2023-03-14

改为这样做

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个不同的地方替换循环的每次迭代)

预期产出:

 类似资料:
  • JS do while 循环与 while 循环非常相似,不同之处在于,do while 循环会先执行循环中的代码,然后再对条件表达式进行判断。因此,无论条件表达式是真还是假,do while 循环都能至少执行一次,而 while 循环就不行了,如果条件表达式为假会直接退出 while 循环。 JS do while 循环语法 JS do while 循环的语法格式如下: do {     //

  • 本文向大家介绍arduino Do ... While,包括了arduino Do ... While的使用技巧和注意事项,需要的朋友参考一下 示例 甲do while环是一样的一个while环路,除了它是保证执行至少一次。 以下循环将执行100次。 类似的循环,但条件不同,将执行1次。 如果上面的循环仅仅是一个while循环,它将执行0次,因为条件将false在第一次迭代之前求和。但是由于这是一

  • 本文向大家介绍do……while和while……do有什么区别?相关面试题,主要包含被问及do……while和while……do有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 前一个循环一遍再判断,后一个判断以后 再循环。    

  • 与while循环顶部测试循环条件的for和while循环不同, do...while循环do...while循环底部检查其条件。 do...while循环类似于while循环,除了do ... while循环保证至少执行一次。 语法 (Syntax) Perl中do...while循环的语法是 - do { statement(s); }while( condition ); 应该注意的是

  • 与while循环顶部测试循环条件的for和while循环不同,Objective-C编程语言中的do...while循环检查循环底部的条件。 do...while循环类似于while循环,除了do ... while循环保证至少执行一次。 语法 (Syntax) Objective-C编程语言中do...while循环的语法是 - do { statement(s); } while( co