大学時代に「二分探索」や「二分スイッチ」でスイッチを使っていたのを覚えています。みたいな感じで、今日Google fooが壊れました。とにかく、次のようになります: 可能なオプション (通常は文字列) の配列を定義すると、いくつかの魔法が起こり、配列内のそれらのオプションがスイッチのケースになります。これが機能するには、アルファベット順に並べる必要があったことを覚えています。魔法を覚えるのを手伝ってくれませんか?私が見るべきものの名前でさえ素晴らしいでしょう。
6662 次
6 に答える
10
あなたが探しているのはEnumだと思います。
上のリンクから…
public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY
}
public class EnumTest {
Day day;
public EnumTest(Day day) {
this.day = day;
}
public void tellItLikeItIs() {
switch (day) {
case MONDAY:
System.out.println("Mondays are bad.");
break;
case FRIDAY:
System.out.println("Fridays are better.");
break;
case SATURDAY:
case SUNDAY:
System.out.println("Weekends are best.");
break;
default:
System.out.println("Midweek days are so-so.");
break;
}
}
....
}
于 2008-11-12T02:58:44.727 に答える
1
gperfのことですか?それとも、一般的な理論 (ハッシュ) について言及していたのでしょうか?
于 2008-11-12T03:58:18.460 に答える
0
スイッチなしで Enum を使用すると、次のようになります。
public enum Day {
SUNDAY {
public String tellItLikeItIs() {
return "Weekends are best.";
}
},
MONDAY {
public String tellItLikeItIs() {
return "Mondays are bad.";
}
},
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY {
public String tellItLikeItIs() {
return "TGI Friday.";
}
},
SATURDAY {
public String tellItLikeItIs() {
return "Weekends are best.";
}
}
public String tellItLikeItIs() {
return "Midweek days are so-so.";
}
}
public class TodayIs{
public static void main(String... args) {
Day day = Day.valueOf(args[0].toUppercase());
System.out.println(day.tellItLikeItIs());
}
}
于 2009-02-26T19:53:53.913 に答える
0
通常、私はそのような方法でスイッチを悪用しません (できたとしても)。case 行では定数値しか許可されないため、switch ステートメントで配列を機能させることはできません。以下のようなパターンや列挙を考えていませんか?
final int RED = 0;
final int YELLOW = 1;
final int BLUE = 2;
final int GREEN = 3;
String[] colors = new String[] { "red", "yellow", "blue", "green" };
switch (color) {
case RED:
System.out.println(colors[RED]);
break;
case YELLOW:
System.out.println(colors[YELLOW]);
break;
...the rest
}
于 2008-11-12T03:11:26.077 に答える
0
public enum Day {
SUNDAY ("sundays are this"),
MONDAY ("mondays are that"),
TUESDAY ("blah"),
WEDNESDAY ("blah"),
THURSDAY ("blah"),
FRIDAY ("blah"),
SATURDAY ("more blah");
private final String tell;
public Day(String tell){
this.tell = tell;
}
public String tellItLikeItIs() {
return this.tell;
}
}
public class TodayIs{
public static void main(String... args) {
Day day = Day.valueOf(args[0].toUppercase());
System.out.println(day.tellItLikeItIs());
私はJava列挙型は初めてですが、これもうまくいくはずです。
于 2009-02-26T20:22:52.470 に答える
0
列挙型を使用することを選択し、列挙型コレクションのサイズが大きい場合:
マジック:
eclipseで作業している場合は、次のように記述するだけで「魔法」が実行されます(受け入れられた回答のコードを考慮して):
switch (day) {
}
を選択してCtrl + 1switch
を押すと、魔法が働きます! (すべての値がブロックのセクションに入力されます)enum
case
switch
于 2012-03-14T12:51:02.947 に答える