1

我的数组看起来像这样

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 Ps 请没有答案?只是建议=)

更新* *

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

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]

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

4

3 回答 3

2

你可以这样做...

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

我将把打印索引值作为练习留给你。

于 2012-12-01T03:20:04.960 回答
1

使用地图,您的键是天,值是索引。

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

Value = > 0,1,2 ..

将值映射到所需的键。

于 2012-12-01T03:08:16.040 回答
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();
于 2012-12-01T03:14:53.820 回答