#java
#java
Вопрос:
Я пытаюсь написать программу, которая принимает входные данные от пользователя. Введите число 1-12, и оно вернет месяц январь-декабрь. Я должен иметь все месяцы в одной длинной строке, а затем использовать подстроку для возврата соответствующего месяца.
Я очень смущен тем, как заставить int соотноситься с подстрокой. Я был бы признателен за некоторые общие рекомендации для этого. Я не хочу, чтобы вся программа была сделана для меня.
Комментарии:
1. Общие рекомендации: не делайте этого. Храните месяцы в массиве и живите счастливо после этого.
2. Хорошо, я должен использовать подстроку. Вот точная проблема, над которой я работаю.
3. Напишите программу, которая преобразует 1,2,3 … 12 в соответствующий месяц январь, февраль… Создайте очень длинную строку «Январь Февраль Март …», в которую вы добавляете пробелы так, чтобы каждое название месяца имело одинаковую длину. Затем используйте substring для извлечения нужного месяца.
Ответ №1:
Не используйте substring()
. Если у вас есть csv с названиями месяцев, используйте split()
для преобразования строки в массив:
String months = "January,February,etc";
int choice; // 1-12
String monthName = months.split(",")[choice - 1];
Обратите внимание, что массивы Java основаны на нуле, поэтому вы должны вычесть 1 из числа в диапазоне 1-12 при использовании в качестве индекса.
Легче читать было бы:
static String[] monthNames = "January,February,etc".split("");
затем в вашем методе:
String monthName = monthNames[choice - 1];
Ответ №2:
Когда вы получаете значения месяца, используя свою подстроку, сохраните ее в своем массиве String . А затем получите значение 1-12 по их индексам 1.
Ответ №3:
Помимо использования Split
, вы также можете использовать StringTokenizer
для анализа вашей строки.
Мой код:
int i = 1;
int month = 0;
while (i == 1) {
System.out.println("Enter your number ");
Scanner input = new Scanner(System.in);
month = input.nextInt();
if (month > 13 || month < 0) {
System.out.println("your number has to be between 1 and 12");
} else {
i = 2;
}
}
List<String> monthList = new ArrayList<>();
StringTokenizer st = new StringTokenizer("January February March April"
" May June July August September October November December");
while (st.hasMoreTokens()) {
monthList.add(st.nextToken(" "));
}
System.out.println("the month is " monthList.get(month - 1));
Мой вывод:
Enter your number
333
your number has to be between 1 and 12
Enter your number
3
the month is March