【发布时间】:2020-05-05 02:19:21
【问题描述】:
创建一个读取整数 (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) 或制表符来格式化您的代码。这将提高代码的可读性和可维护性。
-
另一条评论:你应该开始避免每次都给你的类命名 Main,给它一个有意义的名字来说明程序正在做什么:NumberUtility、NumberFlipper 等等。此外,请尝试停止将所有方法创建为静态方法。相反,在您的主方法中创建类的新实例并调用非静态方法:new NumberUtility().replace()。最后,方法不应该以大写开头——它们应该是驼峰式。
-
在您的问题陈述中,您说:“如果最后一位数字为零,请在反转数字之前将其替换为一 (1)。 ' 在调用 reverse() 之前,您没有执行此检查/更新的代码
-
您对问题的最后一次编辑删除了对您尝试做什么的解释。请把它带回来,让发现这个问题的人更容易理解这个问题。
标签: java