gpt4 book ai didi

java - 使用扫描仪和 useDelimiter/右正则表达式解析文本

转载 作者:行者123 更新时间:2023-12-01 13:48:18 26 4
gpt4 key购买 nike

我想计算两个日期之间的天数,但我在解析输入流时遇到问题......

如果我输入“22 1 2013”​​这样的日期,效果很好,但我遇到了困难:

2013年1月22日

2013年1月22日

2013年1月22日

不幸的是,我对正则表达式了解不多,并且我对 useDelimiter 的所有测试都失败了;也许你可以帮助我(我只允许导入 Scanner 类):

import java.util.Scanner;

public class NewDateDifference {

public static void main(String[] args) {

int day1, day2, month1, month2, year1, year2;

Scanner scan = new Scanner(System.in);

System.out.print("First Date:\t");

day1 = scan.nextInt();
month1 = scan.nextInt();
year1 = scan.nextInt();


/** scan = new Scanner(scan.next()).useDelimiter("\\.");
if ( scan.hasNextInt() ) {
day1 = scan.nextInt();
}
if ( scan.hasNextInt() ) {
month1 = scan.nextInt();
}
if ( scan.hasNextInt() ) {
year1 = scan.nextInt();
}
scan.close(); **/



System.out.print("Second Date:\t");
day2 = scan.nextInt();
month2 = scan.nextInt();
year2 = scan.nextInt();

int diff = calculateDays(year2, month2, day2) - calculateDays(year1, month1, day1);
System.out.println("Days: " + Math.abs(diff));

}

public static int calculateDays(int year, int month, int day) {

int[] dayTillMonth = {0, 31, 61, 92, 122, 153, 184, 214, 245, 275, 306, 337};

if(month < 3) {
year -= 1; month += 9;
} else {
month -= 3;
}
return year * 365 + year/4 - year/100 + year/400 + dayTillMonth[month] + day;
}
}

最佳答案

尝试使用此分隔符

scan.useDelimiter("[\\s.\\-/]+");

它将设置一个或多个字符作为分隔符,这些字符是

  • \\s 空格,如 \r\n
  • .
  • -
  • /

关于java - 使用扫描仪和 useDelimiter/右正则表达式解析文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20176630/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com