本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频
5分15秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器 步骤 1 : 预先定义的常量 步骤 2 : 使用枚举的好处 步骤 3 : 遍历枚举 步骤 4 : 练习-枚举 步骤 5 : 答案-枚举
枚举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
}
假设在使用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; } } }
借助增强型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); } } }
英雄联盟中有这么一些分类
TANK (坦克) WIZARD (法师 ) ASSASSIN (刺客) ASSIST (辅助) WARRIOR (近战) RANGED (远程 ) PUSH (推进) FARMING (打野) 设计一个枚举类型HeroType,使用上述分类作为常量 再编写一段switch语句,把每种枚举常量输出为中文字符串
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频
2分12秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器
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公众号,关注后实时获知最新的教程和优惠活动,谢谢。
问答区域
2023-08-18
大佬们帮我看看我要怎么改
4 个答案
心碎的小白 跳转到问题位置 答案时间:2024-08-23 晚安嘛 跳转到问题位置 答案时间:2024-03-04 HeroType heroType = Scanner.nextInt(),你这个错是因为后面输入的是int型,而前面是枚举类,无法赋值,我想到的是把前面定义成String型,但是这样似乎和枚举类没什么关系。为了满足题目要求,最好的解法是switch外面套一个循环,遍历枚举类里面的所有常量。
码农人 跳转到问题位置 答案时间:2023-11-20 这样行吗?感觉有些偷懒,-_-
优优我心 跳转到问题位置 答案时间:2023-08-30 1. 你的 Scanner.nextInt()写错了,应该是小写
2. .nextInt()读出来的是整数
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2022-08-28
枚举答案
11 个答案
hsus 跳转到问题位置 答案时间:2024-07-22 自己写的答案
木宇 跳转到问题位置 答案时间:2024-04-29 打卡
2672148523 跳转到问题位置 答案时间:2024-02-09 public class Hello {
public static void main(String[] args) {
for (HeroType h: HeroType.values()) {
switch (h){
case TANK -> System.out.println("坦克");
case WIZARD -> System.out.println("法师");
case ASSASSIN -> System.out.println("刺客");
case ASSIST -> System.out.println("辅助");
case WARRIOR -> System.out.println("近战");
case RANGED -> System.out.println("远程");
case PUSH -> System.out.println("推进");
case FARMING -> System.out.println("打野");
}
}
}
}
龚炎 跳转到问题位置 答案时间:2023-05-06 把枚举放到其他类里面的话,就不能用switch了。得用if
for (Hero.英雄分类 y : Hero.英雄分类.values()) { if(y.name() == "TANK"){ xxx } } 起个名 跳转到问题位置 答案时间:2023-03-28 111
learn杜 跳转到问题位置 答案时间:2023-01-30 package Lei1;
public class HeroType {
public enum Herotype{
TANK,WIZARD,ASSASSIN,ASSIST,WARRIOR,RANGED,PUSH,FARMING
}
public static void main(String[] args) {
Herotype herotype = Herotype.FARMING;
switch(herotype) {
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;
}
for (Herotype h : Herotype.values()) {
System.out.println(h);
}
}
}
伊亻 跳转到问题位置 答案时间:2023-01-16 Bingod 跳转到问题位置 答案时间:2022-12-23 54Mozu 跳转到问题位置 答案时间:2022-11-24 public enum HeroType {
TANK,
WIZARD,
ASSASSIN,
ASSIST,
WARRIOR,
RANGED,
PUSH,
FARMING
}
给你买粉包 跳转到问题位置 答案时间:2022-10-18 package JIchuDome;
public enum HeroType {
TANK,//坦克
WIZARD,//法师
ASSASSIN,//刺客
ASSIST,//辅助
WARRIOR,//近战
RANGED,//远程
PUSH,//推进
FARMING//打野
}
Capper 跳转到问题位置 答案时间:2022-10-10 package Enum;
public enum HeroType {
//坦克
TANK,
//法师
WIZARD,
//刺客
ASSASSIN,
//辅助
ASSIST,
//近战
WARRIOR,
//远程
RANGED,
//推进
PUSH,
//打野
FARMING
}
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2022-01-14
题目答案
2021-12-22
语句含义
2021-12-05
练习题最正确答案
提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 40 条以前的提问,请 点击查看
提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
|