java - Java 中的数字反转。前导零和尾随零不会打印

标签 java reversing

问题是反转用户输入的数字。我让它工作,但在测试它时我意识到它不会打印前导零或尾随零。

例如,如果我输入 10,结果中仅显示 1。

如果我输入 0110,我得到的结果是 11。

这是我的代码:

public class ReversingDigits {

int value;
int reverse;

public ReversingDigits() {
    value = 10;
    reverse = 0;
}// end constructor

public void reverse() {
    System.out.println("Enter a valid 2-4 digit number: ");
    Scanner input = new Scanner(System.in);
    value = input.nextInt();
    if (value < 10 || value > 9999){
        System.out.print("Please enter a valid 2-4 digit number: ");
       value = input.nextInt();
    }

    while (value > 0) {
        reverse *= 10;
        reverse += value % 10;
        value /= 10;

    }
    System.out.println("Reversed numbers are: " + reverse);

}

}//end class

关于如何打印零有什么想法吗?

谢谢

最佳答案

确保在反转数字时使用字符串。它将保留前导零。如您所知,在 int 表示形式中 00001 与 1 相同,因此将其转换为字符串将删除所有前导零。

这是修改后的代码示例,用于从输入中读取字符串,并且仅在需要检查范围时将其转换为 int。

public void reverse() {
    System.out.println("Enter a valid 2-4 digit number: ");
    Scanner input = new Scanner(System.in);
    String value = input.next();
    int valueInt = Integer.parseInt(value);

    if (valueInt < 10 || valueInt > 9999){
        System.out.print("Please enter a valid 2-4 digit number: ")
        value = input.next();
    }

    String valueReversed = new StringBuilder(value).reverse().toString();

    System.out.println("Reversed numbers are: " + valueReversed);

}

请注意,在您的代码中,如果用户连续两次输入错误的范围,您的程序将不会再次提示他。您可能希望将这部分代码放入 do-while 循环中,该循环仅在输入范围正确时退出。示例

do {
    System.out.print("Please enter a valid 2-4 digit number: ")
    value = input.next();
    int valueInt = Integer.parseInt(value);
} while (valueInt < 10 || valueInt > 9999);
//only get here when inputted value finally within target range.

编辑: 正如 @Levenal 所提到的,您可能还想将 Integer.parseInt 包装在 try/catch block 中,用于 NumberFormatException 如果用户传递非数字输入。

关于java - Java 中的数字反转。前导零和尾随零不会打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24175179/

相关文章:

c++ - 如何在 C++ 中通过内置的 reverse() 函数存储反转的字符串

c - 逆向工程——使用调试信息进行编译

javascript - 简单的淡入淡出过渡 - 不是反向

c++ - 如何在没有 C++ 辅助方法的情况下反转句子中的单词?

java - Spring 配置文件中的 Liquibase 文件路径

java - 如何通过Spring Boot获取mongoDB中的计数?

java - 我不明白监听器中 lambda 表达式的参数传递

java - 从不同的类调用 jdbc 连接获取 "java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver"

java - 如何使用 EAR 中提供的依赖项取代 Glassfish 内置库?

C程序来反转文件的内容并将其写入另一个文件