关于格式化的输入

addHao 2020-05-01 09:21:42
我在学习C语言时候常常用到scanf()方法,比如要得到一个时间格式16:40我就可以用scanf(“%d:%d”);这是一个很简单的格式化。
但是当我在学习java的时候发现没有类似的方法,当我解决“输入在一行中按照“mm-dd-yyyy”的格式给出月、日、年。题目保证给出的日期是1900年元旦至今合法的日期。”这个问题的时候,我就为难了。不知道如何准确的提取数据。
于是我在Scanner类中找到了useDelimiter()方法;于是我就用“-”做分隔符。但是问题来了
public static void main(String[] args)
{
String year;
String month;
String day;
Scanner in = new Scanner(System.in);
in.useDelimiter("-");
month=in.next();
day = in.next();
year = in.next();
System.out.println(year+"-"+month+"-"+day);
in.close();
}
我输入的格式要mm-dd-yyyy-,可以发现我最后一个要加“-”,不然没办法结束。
于是我又想了个办法,我在最后一个的时候将分割符改成“\r\n”不就好了吗?
public static void main(String[] args)
{
String year;
String month;
String day;
Scanner in = new Scanner(System.in);
in.useDelimiter("-");
month=in.next();
day = in.next();
in.useDelimiter("\r\n");
year = in.next();
System.out.println(year+"-"+month+"-"+day);
in.close();
}
输入的问题解决了但是得到的结果却是
-2020-03-21
多了个-,我要怎么样才能做到完美的提取数据呢?
...全文
283 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qybao 2020-05-01
  • 打赏
  • 举报
回复
in.useDelimiter(“-|\n“); //输入分隔符 month=in.next(); day=in.next(); year=in.next(); System.out.printf(“%s-%s-%s\n”, year, month, day); 输入 03-21-2020回车 还有一种做法就是用正则 用默认输入分割符 String s = in.nextLine(); Matcer m = Patten.compile(“(\\d{2})-(\\d{2})-(\\d{4})”).matcher(s); if(m.find()) { month=m.group(1); day=m.group(2); year=m.group(3); } System.out.printf(“%s-%s-%s\n”, year, month, day);
我好高冷 2020-05-01
  • 打赏
  • 举报
回复
可以直接输入05012020这样的数据然后再把这个数据格式化呀, 如果规定了让你输入的数据是mm-dd-yyyy这样可以用正则表达式进行校验

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧