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开始的数字吗?
答案 0 :(得分:3)
没有以0
开头的数字。
数字存储为数字,而不是文本
由于004
和4
是相同的数字,因此它们的存储方式相同。
如果你关心领先零,你应该使用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
不匹配。