我正在创建一个程序,将日期从数字月日格式转换为字母月日格式。当我尝试读取用户输入的数据时,我陷入困境。例如,如果用户输入日期1/31,它应该打印出1月31日,工作正常,但如果我输入日期14/23,它仍然打印出1月23日,它应该是无效的。这是我用来获取值的代码。我确信我不应该使用子字符串来获取值。这就是它无法正常工作的原因。我该如何处理?
public static void readInput()
{
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter a date in numerical format, ex: 1/31");
getDate = keyboard.nextLine();
conversion();
}
public static void conversion()
{
month = getDate.substring(0,1); // gets the month
day = getDate.substring(2,4); // gets the date
monthConversion();
}
答案 0 :(得分:0)
你在做substring(0,1)
。您需要执行substring(0,2)
另一种方式是你可以以" mm"的格式输入月份的输入。即01,02,12等,然后应用substring(0,2)
。
我希望这能回答你的问题。
答案 1 :(得分:0)
您的问题是,由于您通过索引拆分输入日期,因此您无法处理每个部分可以是1位数或2位的事实(1/1是1月1日,10月10日是11月10日)。
您应该考虑将输入日期与/
分开getDate.split('/')
;这将返回一个数组,其第一个元素是day部分,第二个元素是month部分。
在旁注中,您应该验证您实际上是否获得了预期的日期格式。确保预期的部分都是整数,可以是日期或月份数字,并且没有额外的部分。