how2j.cn


本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频



5分15秒
本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)



步骤 1 : 预先定义的常量   
步骤 2 : 使用枚举的好处   
步骤 3 : 遍历枚举   
步骤 4 : 练习-枚举   
步骤 5 : 答案-枚举   

步骤 1 :

预先定义的常量

枚举enum是一种特殊的类(还是类),使用枚举可以很方便的定义常量
比如设计一个枚举类型 季节,里面有4种常量


public enum Season {
SPRING,SUMMER,AUTUMN,WINTER
}


一个常用的场合就是switch语句中,使用枚举来进行判断

注:因为是常量,所以一般都是全大写
public class HelloWorld { public static void main(String[] args) { Season season = Season.SPRING; switch (season) { case SPRING: System.out.println("春天"); break; case SUMMER: System.out.println("夏天"); break; case AUTUMN: System.out.println("秋天"); break; case WINTER: System.out.println("冬天"); break; } } }
public enum Season { SPRING,SUMMER,AUTUMN,WINTER }
步骤 2 :

使用枚举的好处

假设在使用switch的时候,不是使用枚举,而是使用int,而int的取值范围就不只是1-4,有可能取一个超出1-4之间的值,这样判断结果就是是而非了。(因为只有4个季节)

但是使用枚举,就能把范围死死的限定在这四个当中

SPRING,SUMMER,AUTUMN,WINTER

而不会出现奇怪的 第5季
public class HelloWorld { public static void main(String[] args) { int season = 5; switch (season) { case 1: System.out.println("春天"); break; case 2: System.out.println("夏天"); break; case 3: System.out.println("秋天"); break; case 4: System.out.println("冬天"); break; } } }
public class HelloWorld {
    public static void main(String[] args) {
        int season = 5;
        switch (season) {
        case 1:
            System.out.println("春天");
            break;
        case 2:
            System.out.println("夏天");
            break;
        case 3:
            System.out.println("秋天");
            break;
        case 4:
            System.out.println("冬天");
            break;
        }
    }
}
步骤 3 :

遍历枚举

借助增强型for循环,可以很方便的遍历一个枚举都有哪些常量
public class HelloWorld { public static void main(String[] args) { for (Season s : Season.values()) { System.out.println(s); } } }
public class HelloWorld {
	public static void main(String[] args) {
		for (Season s : Season.values()) {
			System.out.println(s);
		}
	}
}
步骤 4 :

练习-枚举

Or  姿势不对,事倍功半! 点击查看做练习的正确姿势
英雄联盟中有这么一些分类
TANK (坦克)
WIZARD (法师 )
ASSASSIN (刺客)
ASSIST (辅助)
WARRIOR (近战)
RANGED (远程 )
PUSH (推进)
FARMING (打野)
设计一个枚举类型HeroType,使用上述分类作为常量

再编写一段switch语句,把每种枚举常量输出为中文字符串
步骤 5 :

答案-枚举

在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频

2分12秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)


package charactor; public enum HeroType { TANK, WIZARD, ASSASSIN, ASSIST, WARRIOR, RANGED, PUSH, FARMING }
package charactor; public class Hero { public String name; // 姓名 public static void main(String[] args) { HeroType type = HeroType.ASSASSIN; switch (type) { case TANK: System.out.println("坦克"); break; case WIZARD: System.out.println("法师"); break; case ASSASSIN: System.out.println("刺客"); break; case ASSIST: System.out.println("辅助"); break; case WARRIOR: System.out.println("近战"); break; case RANGED: System.out.println("远程战"); break; case PUSH: System.out.println("推进"); break; case FARMING: System.out.println("打野"); break; } } }


HOW2J公众号,关注后实时获知布最新的教程和优惠活动,谢谢。


问答区域    
2017-12-10 可是,我要怎么用这个枚举型呢?
登陆
感觉上,好像int一个季节的话,虽然有5这种情况的出现,但是我们可以用default啊;还有就是如果要做一个季节判断,判断输入一个东西是什么季节,用enum要怎么去实现?




1 个答案

染指流年 答案时间:2018-01-04




答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到




2017-12-06 还有什么方法能遍历枚举类啊
Vangan



除了增强型for循环,还有什么方法能遍历枚举类啊
public class TestHeroType {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
                //增强型for循环遍历枚举类HeroType
		for(HeroType h : HeroType.values()){
			System.out.print(h+":");
			
			switch(h){
			case TANK:
				System.out.println("坦克");
				break;
			case WIZARD:
				System.out.println("法师");
				break;
			case ASSASSIN:
				System.out.println("刺客");
				break;
			case ASSIST:
				System.out.println("辅助");
				break;
			case WARRIOR:
				System.out.println("近程");
				break;
			case RANGED:
				System.out.println("远程");
				break;
			case PUSH:
				System.out.println("推进");
				break;
			case FARMING:
				System.out.println("打野");
				break;
			}
		}
	}
}

							


1 个答案

lucifer_lxf 答案时间:2017-12-11
枚举名.values()这个方法会返回给你一个装着枚举元素的数组,怎么遍历数组你该会了吧.
HeroType[] values = HeroType.values();
		for (int i = 0; i < values.length; i++) {
			System.out.println(values[i]);
		}




答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2017-12-03 交作业
2017-11-19 答案有一句是多余的吗
2017-10-13 Season season = Season.SPRING;这行什么意思?
2017-10-11 报错
2017-07-12 作业
2017-06-30 枚举练习
2017-04-25 遍历并输出中文
2016-07-01 这答案是上一个问题的吗?




提问之前请登陆
关于 JAVA 基础-类和对象-枚举类型 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 389538688
站长会在每个工作日早上尽量回答提问(如果有漏掉没有回答的,请进群提醒一下)
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
站长是玻璃心,提问的时候请语气温柔些 kiss~
截止2017-5-19日累计提问 1638个,站长回答了 1546个
截止2017-8-15日累计提问 2788个,站长回答了 2544个

上传截图