如何使用String获取特定值

时间:2016-01-26 00:04:54

标签: java

我正在创建一个程序,将日期从数字月日格式转换为字母月日格式。当我尝试读取用户输入的数据时,我陷入困境。例如,如果用户输入日期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();
}

2 个答案:

答案 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部分。

在旁注中,您应该验证您实际上是否获得了预期的日期格式。确保预期的部分都是整数,可以是日期或月份数字,并且没有额外的部分。