首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中的反转数字。不打印前导零和尾随零

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

Stack Overflow用户
提问于 2014-06-12 09:31:22
回答 2查看 9.2K关注 0票数 0

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

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

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

下面是我的代码:

代码语言:javascript
复制
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

关于如何打印零有什么建议吗?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-12 09:41:20

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

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

代码语言:javascript
复制
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循环中,该循环仅在输入范围正确时才会退出。示例

代码语言:javascript
复制
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包装在NumberFormatExceptiontry/catch块中。

票数 2
EN

Stack Overflow用户

发布于 2014-06-12 09:51:13

正如已经指出的,反转数字比反转字符串要好得多。如果允许您远离控制台输入,那么JOptionPane非常适合于简单的字符串输入,如下所示:

代码语言:javascript
复制
    while(true){
        String input = JOptionPane.showInputDialog("Please anter a number between 10 & 9999: ");
        if(input == null){//If input cancelled
            break; //Exit loop
        } else if(input.matches("\\d{2,4}")){//Regex for at least 2 but no more than 4 numbers
            System.out.println(new StringBuilder(input).reverse().toString());//Reverse
            break;
        }
    }

祝好运!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24175179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档