2016-01-26 60 views
0

我正在創建一個將日期從數字月份日期格式轉換爲字母月份日期格式的程序。當我嘗試讀取用戶輸入的數據時,我被卡住了。例如,如果用戶輸入日期爲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

'monthConversion()'的代碼在哪裏? –

+6

你不能總是假定'month'符合1個字符 - 你可以使用String [] parts = getDate.split(「/」)'在斜線上分割,然後從'parts [ 0]'和'day'從'parts [1]'。 –

+1

'新的SimpleDateFormat(「MM/dd」)。parse(字符串)' –

回答

0

你的問題是,既然你通過索引分割輸入日期,你不處理事實,每個部分可以是1位數或2(1/1是1月1日,10/10是11月10日) 。 您應該考慮將/的輸入日期與getDate.split('/')分開;這將返回一個數組,其第一個元素將是日期部分,第二個元素將是月份部分。

在旁註中,您應該驗證您確實獲得了預期的日期格式。確保預期的部分都是可以是日或月號的整數,並且沒有額外的部分。

+0

好的,我得到了謝謝 –

0

你在做substring(0,1)。你需要做的是substring(0,2)

另一種方式是你可以採用「mm」格式的月份輸入,即01,02,12等,然後應用substring(0,2)

我希望這能回答你的問題。

相關問題