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公众号,关注后实时获知布最新的教程和优惠活动,谢谢。


问答区域    
2018-09-05 打印
stark-my-belief



LPL牛逼
public enum HeroType {
    TANK,WIZARD,ASSASSIN,ASSIST,WARRIOR,RANGED,PUSH,FARMING
}
//
//
//
//public class Other6 {
    public static void main(String[] args) {
		HeroType ht = HeroType.ASSASSIN;
		switch(ht){
		case TANK:
			System.out.println("我是前排,扛起伤害");
			break;
		case ASSASSIN:
			System.out.println("有我在,对面的法师和AD无比恐惧");
			break;
		case FARMING:
			System.out.println("再去野区的路上,不论谁的,都是我的");
			break;
		case ASSIST:
			System.out.println("我可以死,AD不能死,我可以活,对面不能活");
			break;
		case PUSH:
			System.out.println("带线什么的,我最擅长,不出意外,我能带到对面泉水");
			break;
		case RANGED:
			System.out.println("我打的就是坦克,不,我打的就是对面所有人");
			break;
		case WARRIOR:
			System.out.println("贴脸打?你脑子坏掉了吧,瞧,你又死了");
			break;
		case WIZARD:
			System.out.println("打团我能打出成吨伤害,中野联动为啥中在前,因为有我");
			break;
		}
	}
}







							






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





2018-09-05 交作业
Robin93GG



交作业交作业交作业交作业交作业
/*

英雄联盟中有这么一些分类
TANK (坦克)
WIZARD (法师 )
ASSASSIN (刺客)
ASSIST (辅助)
WARRIOR (近战)
RANGED (远程 )
PUSH (推进)
FARMING (打野)

*/

public enum HeroType{

	TANK,WIZARD,ASSASSIN,ASSIST,WARRIOR,RANGED,PUSH,FARMING
}

public static void main(String[] args){

	for(HeroType ht : HeroType.values()){
		switch(ht){
			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 个答案

Sparrow 答案时间:2018-09-08
TANK 我是坦克 WIZARD 我是法师 ASSASSIN 我是刺客 ASSIST 我是辅助 WARRIOR 近战 RANGED 远程 PUSH 推进 FARMING 我来打野




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





2018-08-28 按在地上摩擦~
2018-08-26 作业
2018-08-15 打卡
2018-08-08 作业
2018-07-24 交作业
2018-07-21 交作业
2018-07-16 ASSASSIN是随便取的吗?
2018-07-09 作业
2018-06-09 作业
2018-06-04 枚举
2018-06-01 交作业呀交作业
2018-05-29 交作业
2018-05-19 交作业
2018-05-19 交作业
2018-05-16 交作业
2018-05-08 作业
2018-03-27 HeroType type = HeroType.ASSASSIN;不懂这句话
2017-12-10 可是,我要怎么用这个枚举型呢?
2017-12-06 还有什么方法能遍历枚举类啊
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群交流: 620943819
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: http://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图