Как сделать, чтобы ввод int соотносился с подстрокой?

#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