Scanner 默认分隔符为空格或换行符。如果不切换分隔符,会导致同一行上第一个空格之后的字符全部被忽略。
public class DemoDate {
public static void main(String[] args) throws ParseException {
// 注意, 格式化字符串中包含空格,说明我们要在控制台中输入空格来匹配此格式。
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String birth = readLine();
Date date = format.parse(birth);
System.out.printf("你已经活了 %d 天了,折合 %d 年",getLiveDays(date), getLiveDays(date)/365);
}
public static String readLine(){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入生日");
// 注意,如果不切换默认分隔符,空格之后的字符将被忽略,将导致格式化字符串失败。因为默认分隔符是空格或者换行符。下面将分隔符设置为换行符。
scanner.useDelimiter("\n");
return scanner.next();
}
public static Long getLiveDays(Date birth){
Long now = System.currentTimeMillis();
Long b = birth.getTime();
return (now - b)/(3600*24*1000);
}
}
默认情况下,Java Scanner使用空格或换行作为分隔符,这可能导致在同一行中第一个空格后的字符被忽视。理解这一行为对于正确处理用户输入至关重要。
714

被折叠的 条评论
为什么被折叠?



