打印从0开始的数字输入

时间:2013-01-21 14:29:04

标签: java format

    Scanner input = new Scanner(System.in);
    System.out.print("\tEnter student no.: \t");
    long studNo = input.nextLong();
    System.out.println(studNo);

如果我输入0914325,则仅打印914325。我知道因为数据类型是long。我可以使用String数据类型但是如果用户意外输入了一封信怎么办?有什么方法可以打印从0开始的数字吗?

3 个答案:

答案 0 :(得分:3)

没有以0开头的数字。

数字存储为数字,而不是文本 由于0044是相同的数字,因此它们的存储方式相同。

如果你关心领先零,你应该使用String,而不是Long,因为你显然没有使用它作为数字。
邮政编码或电话号码也是如此。

答案 1 :(得分:0)

正如SLaks所说,它总会切断前导零。因此,如果要保留用户输入的原始格式,则应该将其存储为String。检查它是否是有效数字的最佳方法是使用正则表达式。

String s = input.getLine();
if(!s.matches("[0-9]+")){
    //prompt for input again
}

基本上这是如何工作的,它将输入的字符串与提供的模式相匹配。

所以我把[0-9] +作为要匹配的字符串,括号表示集合0-9中的任何数字。加号表示前一个模式重复一次或多次。因此,这将检查字符串中的每个字符,以确保它们在0-9集内。请记住,如果您再次将其转换为数字类型,则前导零将丢失。

答案 2 :(得分:0)

使用

scanner.next("[0-9]+");

这会完成您需要的所有验证,导致NoSuchElementException不匹配。