Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用do while反转数字_Java - Fatal编程技术网

Java 使用do while反转数字

Java 使用do while反转数字,java,Java,创建一个java程序,该程序读取整数(NUM),并使用除法和余数/模运算符确定其倒数。如果最后一位数字为零,则在反转数字之前,将其替换为一(1)。同时输出所有数字的总和。 import java.util.*; public class Main { static int replace(int number){ if (number == 0) return 0; int digit = number % 10;

创建一个java程序,该程序读取整数(NUM),并使用除法和余数/模运算符确定其倒数。如果最后一位数字为零,则在反转数字之前,将其替换为一(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

改为这样做

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);
    }
}
由于您替换数字的方式,您的代码从根本上是错误的

所作的修改:

  • 更改了替换算法(无法将所有0值更改为错误的1,以及获得错误值的原因)
  • 在进入循环之前,请替换该号码。(不需要在3个不同的位置替换循环的每个迭代)
  • 预期产出:


    FY:您应该考虑使用空格(4)或制表符来格式化代码。这将提高代码的可读性和可维护性。另一条评论:您应该开始避免每次都将类命名为Main,为它指定一个有意义的名称来描述程序正在执行的操作:numberUtability、NumberFlipper等等。另外,尝试停止将所有方法创建为静态方法。相反,在main方法中,创建类的新实例并调用非静态方法:newnumberutility().replace()。最后,方法不应该以大写字母开头——它们应该是驼峰式的。在你的问题陈述中,你会说:“如果最后一个数字是零,在倒数之前用一(1)替换它。”调用reverse()之前,您没有执行此检查/更新的代码上次对问题的编辑删除了对您尝试执行的操作的解释。请把它带回来,让发现这个问题的人更容易理解。。请填写您的答案,将所有文本粘贴到答案中。