2013-02-02 49 views
1

好的,所以我们应该制作一个程序,只读取mm/dd/yyyy格式的日期的正确输入。到目前为止,我所学到的全部是if-else语句,触及了枚举的一些内容,字符串处理,切换语句等等。我认为最好的方法是使用/的分隔符来分别捕获每个月的每日和每年的输入,但是当我运行下面看到的内容时,程序就会在输入后停止,比如5/16/1985 ......澄清程序实际上仍在运行,但没有任何反应(即期望的字符串过程和它们的值的输出)。一旦我输入日期,它什么都不做,我想知道为什么?分隔符是否不起作用?我是否想用错误的方式使用分隔符?它让我疯狂大声笑,任何建议都会很好!为什么这个分隔符不能正常工作?

也想补充一点,我试图在创建字符串后分隔符(如下所示),并试图捕获INT值使用nextInt .....仍然做同样的事情,什么都没有发生后初始日期输入....

Scanner keyboard = new Scanner(System.in); 

keyboard.useDelimiter("/"); 

String month = keyboard.next(); 
String day = keyboard.next(); 
String year = keyboard.next(); 

int monthi = Integer.parseInt(month); 
int dayi = Integer.parseInt(day); 
int yeari = Integer.parseInt(year); 

System.out.println(monthi); 
System.out.println(dayi); 
System.out.println(yeari); 

回答

1

更改您的分隔符还包括换行符:

keyboard.useDelimiter("[/\n]"); 

这样你最后.next()电话将有东西来解析。您还可以使用keyboard.hasNext()来确定是否还有任何可解析的内容(如果不是,您可能需要处理该情况,因为输入了无效日期)。

你的代码永远运行在其当前状态的原因,是你正在使用3个next()电话,但只提供2 \的,当你增加它曾经是一个第三\的方式你的程序将终止,但在要划分的事物列表中添加换行符(\n字符)最后的next()调用将拉取最后一个斜杠和换行符之间的内容。

+0

现在就试试....没有运气,同样的事情,它仍然没有做什么,日食显示程序仍在运行,但预期的输出仍然没有发生..... –

+0

@ user2035824我编辑了我的答案并测试它,现在应该工作。 –

+0

@凯文D.烨,(几乎)做到了!但是,我试图从年份解析INT值时发生错误,因为它后面有空白(至少我认为是问题所在),所以我修改了您建议包含year.trim()的内容,然后它像一个魅力工作!感谢您指引我朝着正确的方向发展,现在希望我的所有if-else声明都能在闰年和30或31天内发挥作用! –

相关问题