2016-01-26 2 views
0

Я создаю программу, которая преобразует даты с числового формата месяца в формат буквенного месяца. Я застреваю, когда пытаюсь читать данные, введенные пользователем. Например, если пользователь вводит дату 1/31, он должен распечатать 31 января, это работает нормально, но если я введу дату 14/23, она по-прежнему распечатывается 23 января, она должна быть недействительной. Это код, который я использовал для получения значений. Я уверен, что я не должен использовать подстроку для получения значений. Вот почему он работает неправильно. Как я подхожу к этому?Как получить конкретные значения с помощью String

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 ("/") 'для разделения на косую черту, а затем получить' month' from 'parts [ 0] 'и' day' из 'parts [1]'. –

+1

'new SimpleDateFormat (« MM/dd »). Parse (String)' –

ответ

0

Ваша проблема заключается в том, что, поскольку вы разделяете дату ввода по индексам, вы не обрабатываете тот факт, что каждая часть может быть 1 или 2 (1/1 - 1 января, 10/10 - 10 ноября) , Вы должны рассмотреть возможность разделения даты ввода / на getDate.split('/'); это вернет массив, первым элементом которого будет часть дня, а второй элемент будет частью месяца.

На боковой ноте вы должны подтвердить, что на самом деле вы получаете ожидаемый формат даты. Убедитесь, что обе ожидаемые части являются целыми числами, которые могут быть дневными или месячными, и что нет никакой дополнительной части.

+0

OK Я получил Спасибо –

0

Вы делаете substring(0,1). Вы должны сделать substring(0,2)

Другой способ состоит в том, что вы можете ввести ввод месяца в формате «мм», т.е. 01, 02, 12 и т. Д., А затем применить substring(0,2).

Надеюсь, это ответит на ваш вопрос.

Смежные вопросы