Java 如何使int输入与子字符串关联?

Java 如何使int输入与子字符串关联?,java,Java,我正在尝试编写一个程序,从用户那里获取输入。输入数字1-12,它将返回月份1-12。我必须将所有月份放在一个长字符串中,然后使用子字符串返回相应的月份 我很困惑如何得到一个int来关联到一个子串。我希望有一些这样做的一般准则。我不希望为我完成整个程序。不要使用substring()。如果您有一个月名称的csv,请使用split()将字符串转换为数组: String months = "January,February,etc"; int choice; // 1-12 String monthN

我正在尝试编写一个程序,从用户那里获取输入。输入数字1-12,它将返回月份1-12。我必须将所有月份放在一个长字符串中,然后使用子字符串返回相应的月份

我很困惑如何得到一个int来关联到一个子串。我希望有一些这样做的一般准则。我不希望为我完成整个程序。

不要使用
substring()
。如果您有一个月名称的csv,请使用
split()
将字符串转换为数组:

String months = "January,February,etc";
int choice; // 1-12
String monthName = months.split(",")[choice - 1];
请注意,java数组是基于零的,所以当用作索引时,必须从1-12范围内的数字中减去1


更容易阅读的是:

static String[] monthNames = "January,February,etc".split("");
然后在您的方法中:

String monthName = monthNames[choice - 1];

使用子字符串获取月份值时,将其存储在字符串数组中。然后通过索引+1得到1-12的值

除了使用
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));

一般指导:不要这样做。在数组中存储月份,然后快乐地生活。好的,我必须使用子字符串。这就是我正在研究的问题。编写一个程序,将1,2,3…12转换为相应的月份1月,2月。。。制作一个很长的字符串“一月-二月-三月…”,在其中添加空格,使每个月的名称具有相同的长度。然后使用子字符串提取所需月份。
Enter your number 
333
your number has to be between 1 and 12
Enter your number 
3
the month is March