public class TestEnum2
{
static public enum Day { Monday, Tuesday, Wednesday, Thursday, Friday,
Saturday, Sunday
}; void showDay(Day d)
{
switch (d)
{
case Monday: //11行 Monday要是改成Day.Monday 编译时就会报错
System.out.println("今天是星期一");
break;
case Tuesday:
System.out.println("今天是星期二");
break;
case Wednesday:
System.out.println("今天是星期三");
break;
case Thursday:
System.out.println("今天是星期四");
break;
case Friday:
System.out.println("今天是星期五");
break;
case Saturday:
System.out.println("今天是星期六");
break;
case Sunday:
System.out.println("今天是周日");
break;
}
} public static void main(String[] args)
{
Day d = Day.Monday; //为什么这里 把Monday改为Day.Monday, 编译时会报错,这不是与11行有冲突么
//请问到底什么时候必须用Monday, 什么时候必须用Day.Monday ????请诸位高手指教
TestEnum2 te = new TestEnum2();
te.showDay(d); System.out.println("嘿嘿!");
}
}
/*
在JDK 1.6中的运行结果是:
-------------------
今天是星期一
嘿嘿!
-------------------
*/
解决方案 »
- 算法请教
- 为什么不对啊
- 请问Java中JButton可不可以实现文字在图片的下方显示,而不是默认的右边
- 关于JTable中通过Tab键使焦点在各个单元格中移动的问题
- java里面输入输出流的一个乱码问题
- 问一个问题,我是菜鸟。
- 如果我现在要开发网站,需要网上收费,这个怎么实现的
- 数据库应用的基本问题
- 输入控制
- 金山词霸能在jb6下用么?看坛子上几为兄弟说可以,可是我在jb5下,词霸还是取不了词么,而且词霸2002的网站上也没什么补丁,就因为这个我后来才把jb5又给del了,各位能不能和我说词霸怎么在jb下取词,能取词的,你们的系统是什么?
- 面试题:在MVC 模型中,控制层可以控制视图层或者控制层可以控制model层吗?
- 【求助】请问能向Collection类中装入基本类型的数据么?
这是因为你的Day是一个内部类, 如果你重新建一个类Day.java, 然后用 import static Day.*, 就可以了.
鄙视那个写书的。
Sunday,这几个值,所以得写成Day.Monday,表示取的是Monday,然后在case语句当中发现匹配的Monday
执行后边的语句,switch语句中的case标签只能写整数,因为枚举默认的是整数,ok!
即使这个枚举类型写在外边,你还得这样写Day.Monday;要不编译器知道你的Monday是什么意思,LZ
只要明白Day是一种类型就可以了,你也可以这样写,如下:public class test
{
void showDay(Day d)
{
switch (d)
{
case Monday: //11行 Monday要是改成Day.Monday 编译时就会报错
System.out.println("今天是星期一");
break;
case Tuesday:
System.out.println("今天是星期二");
break;
case Wednesday:
System.out.println("今天是星期三");
break;
case Thursday:
System.out.println("今天是星期四");
break;
case Friday:
System.out.println("今天是星期五");
break;
case Saturday:
System.out.println("今天是星期六");
break;
case Sunday:
System.out.println("今天是周日");
break;
}
} public static void main(String[] args)
{
Day d = Day.Monday; //为什么这里 把Monday改为Day.Monday, 编译时会报错,这不是与11行有冲突么
//请问到底什么时候必须用Monday, 什么时候必须用Day.Monday ????请诸位高手指教
test te = new test();
te.showDay(d); System.out.println("嘿嘿!");
}
}
enum Day { Monday, Tuesday, Wednesday, Thursday, Friday,
Saturday, Sunday
};
2008年11月9日12:34:35
有关枚举常量的使用问题
*/public class TestEnum2
{
public enum Day { Monday, Tuesday, Wednesday, Thursday, Friday,
Saturday, Sunday
}; void showDay(Day d)
{
switch (d)
{
case Monday: //11行 Monday要是改成Day.Monday 编译时就会报错
System.out.println("今天是星期一");
break;
case Tuesday:
System.out.println("今天是星期二");
break;
case Day.Wednesday: //17行
System.out.println("今天是星期三");
break;
case Thursday:
System.out.println("今天是星期四");
break;
case Friday:
System.out.println("今天是星期五");
break;
case Saturday:
System.out.println("今天是星期六");
break;
case Sunday:
System.out.println("今天是周日");
break;
}
} public static void main(String[] args)
{
Day d = Day.Monday; //37行 为什么这里 把Monday改为Day.Monday, 编译时会报错,这不是与11行有冲突么
//请问到底什么时候必须用Monday, 什么时候必须用Day.Monday ????请诸位高手指教
TestEnum2 te = new TestEnum2();
te.showDay(d); switch (d)
{
case Monday: //44行 Monday 要是改为Day.Monday 同样会出错 出错的提示信息是:“枚举 switch case 标签必须为枚举常量的非限定名称”
System.out.println("今天是星期一");
break;
case Tuesday:
System.out.println("今天是星期二");
break;
case Wednesday:
System.out.println("今天是星期三");
break;
case Thursday:
System.out.println("今天是星期四");
break;
case Friday:
System.out.println("今天是星期五");
break;
case Saturday:
System.out.println("今天是星期六");
break;
case Sunday:
System.out.println("今天是周日");
break;
} System.out.println("嘿嘿!");
}
}
/*
在JDK 1.6中的运行结果是:
-------------------
今天是星期一
嘿嘿!
-------------------
总结:
11和44行只能用Monday,不能用Day.Monday
37行只能用Day.Mondy, 不能用Monday
之所以如此,据某网友的说法,case标签只能使用枚举常量,即如果枚举常量是在case
中是使用的话,则规定不能在枚举常量的前面加类名,其他地方要使用枚举常量的话,则
必须得都加类名来作为限定符
11和44行是在case中,所以Monday前面不能加类名Day
37行不是在case中使用,所以必须在前面加类名Day 比如:如果把17行的Wednesday改为Day.Wednesday,则编译时会提示如下信息:
--------------------
TestEnum2.java:17: 枚举 switch case 标签必须为枚举常量的非限定名称
case Day.Wednesday:
^
1 错误
--------------------
*/