获取字符串数组中的字符串索引

时间:2012-12-01 02:54:37

标签: java arrays string

我的数组看起来像这样

String[] dayNames = new String[DAYS_IN_WEEK];
    dayNames[0] = "Sunday";
    dayNames[1] = "Monday";
    dayNames[2] = "Tuesday";
    dayNames[3] = "Wednesday";
    dayNames[4] = "Thursday";
    dayNames[5] = "Friday";
    dayNames[6] = "Saturday";

我需要使用findDay方法打印数组的索引。

所以如果选择“星期六”,我需要返回6个。

谢谢你的时间= D. 附:没有答案吗?只是建议=)

UPPDATE * *

我的数组不会编译。这正是我所拥有的:

private static final int DAYS_IN_WEEK = 7;
    String[] dayNames;
    dayNames = new String[DAYS_IN_WEEK]
    // Declare an array of Strings named dayNames
    dayNames[0] = "Sunday";
    dayNames[1] = "Monday";
    dayNames[2] = "Tuesday";
    dayNames[3] = "Wednesday";
    dayNames[4] = "Thursday";
    dayNames[5] = "Friday";
    dayNames[6] = "Saturday";

我从以下开始出现多个错误:

Weekdays.java:12: error: <identifier> expected
    dayNames = new String[DAYS_IN_WEEK]

我不明白为什么。我从字面上复制了EXACT格式 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html

3 个答案:

答案 0 :(得分:2)

你可以这样做......

int index = Arrays.asList(dayNames).indexOf("Saturday");

我将打印索引值作为练习。

答案 1 :(得分:1)

使用地图,您的密钥是日期,而值是索引。

Key => Sunday , Monday , Tuesday .....

Value = > 0,1,2 ..

根据您需要的密钥映射值。

答案 2 :(得分:1)

嗯,一种方法就是这样:

public int findDay(String dayString) {
    if (dayString.equals("Sunday") {
        return 0;
    }
    else if (dayString.equals("Monday") {
    ...

你得到了它的要点 - 但这是一个相当狡猾的解决方案。

另一种方法是使用Java的枚举值:

public enum Day {
    SUNDAY(0), MONDAY(1), TUESDAY(2), WEDNESDAY(3) ...

    private final int i;
    private Day(int value) {
        i = value;
    }

    public int getNumericRepresentation() {
        return i;
    }
}

然后你可以实际拥有一系列枚举,例如:

Day[] days = new Day[Day.values().size()];
int i = 0;
for (Day day : Day.values()) {
    days[i] = day;
    i++;
}

要打印出一天的数字表示,您只需使用:

day.getNumericRepresentation();