Java枚举代码补全求助:实现指定输出及求Java学习建议
Java枚举问题解决方案及学习建议
嘿,我来帮你搞定这个Java枚举的问题,顺便给你些实用的Java学习建议~
补全后的完整代码
import java.util.List; import java.util.Arrays; public class DayOfWeekDriver { public enum DayOfWeek { MONDAY("M"), TUESDAY("T"), WEDNESDAY("W"), THURSDAY("R"), FRIDAY("F"), SATURDAY("S"), SUNDAY("Y"); // 修正缩写为Y,匹配目标输出 static { MONDAY.next = TUESDAY; TUESDAY.next = WEDNESDAY; WEDNESDAY.next = THURSDAY; THURSDAY.next = FRIDAY; FRIDAY.next = SATURDAY; SATURDAY.next = SUNDAY; SUNDAY.next = MONDAY; } private DayOfWeek next; private String abbreviation; DayOfWeek(String abbreviation) { this.abbreviation = abbreviation; } // 重命名为next(),匹配main方法中的调用 public DayOfWeek next() { return next; } public String getAbbreviation() { return abbreviation; } // 实现getLetter()方法,返回缩写字符 public char getLetter() { return abbreviation.charAt(0); } // 实现静态方法:根据字符获取对应的星期枚举 public static DayOfWeek toDayOfWeek(char c) { for (DayOfWeek day : values()) { if (day.getLetter() == c) { return day; } } return SUNDAY; // 默认返回SUNDAY,匹配目标输出 } // 实现静态方法:返回所有星期枚举的列表 public static List<DayOfWeek> getDays() { return Arrays.asList(values()); } } public static void main(String[] args) { DayOfWeek today = DayOfWeek.FRIDAY; if (today == DayOfWeek.SATURDAY || today == DayOfWeek.SUNDAY) { System.out.println("Today's a weekend."); } else { System.out.println("Today's a weekday."); } for (DayOfWeek day : DayOfWeek.values()) { System.out.printf("The abbreviation for %s is %c \n", day, day.getLetter()); } for (Character c : "YMWFTRS".toCharArray()) { System.out.println(DayOfWeek.toDayOfWeek(c)); } List<DayOfWeek> list = DayOfWeek.getDays(); System.out.println(list.get(0) == DayOfWeek.values()[0]); System.out.println(DayOfWeek.MONDAY.next() == DayOfWeek.TUESDAY); System.out.println(today.next() == DayOfWeek.SATURDAY); System.out.println(DayOfWeek.SUNDAY.next() == DayOfWeek.MONDAY); } }
代码修改说明
- 修正SUNDAY的缩写:将原枚举中
SUNDAY("S")改为SUNDAY("Y"),这样才能匹配目标输出中字符Y对应SUNDAY的逻辑。 - 调整方法名:把枚举内的
nextDay()重命名为next(),和main方法中的调用保持一致。 - 实现getLetter():在枚举内部添加该方法,返回缩写字符串的第一个字符,满足输出格式要求。
- 实现toDayOfWeek()静态方法:遍历所有枚举项,根据输入字符匹配对应的星期枚举,默认返回
SUNDAY以符合目标输出。 - 实现getDays()静态方法:通过
Arrays.asList(values())返回包含所有枚举项的列表,确保list.get(0)和DayOfWeek.values()[0]指向同一个枚举实例(枚举是单例)。 - 修正方法位置:把原本在
DayOfWeekDriver类中的getLetter()移到枚举内部,因为main方法是通过枚举实例调用该方法的。
运行这段代码后,就能得到你需要的目标输出啦~
Java学习资源建议
- 基础入门:Oracle官方的Java Tutorials是最权威的入门资料,覆盖了从语法到核心API的所有基础内容,讲解清晰易懂,适合从零开始系统学习。
- 实战练习:
- LeetCode的Java专项练习题:从简单到复杂,既能巩固语法知识,又能锻炼算法思维和问题解决能力。
- Codewars的趣味编程题:题目风格多样,难度分层明确,适合在轻松的氛围中提升编码熟练度。
- 进阶提升:
- 《Effective Java(第三版)》:Java开发者必读的经典书籍,总结了大量实用的编码最佳实践,能帮你写出更优雅、高效且符合规范的代码。
- 《Java核心技术卷1&卷2》:非常全面的Java教程书籍,从基础语法到高级特性(如并发编程、IO操作)都有细致讲解,适合深入学习。
- 社区交流:
- Stack Overflow:遇到问题先搜索,大部分常见问题都能找到详细解答;如果找不到,就像你现在这样提问,社区里的开发者们很乐意帮忙。
- Reddit的r/java板块:经常有开发者分享最新的Java资讯、技术心得和实用工具,能让你跟上行业动态,拓宽技术视野。
内容的提问来源于stack exchange,提问作者joseph park
相关产品推荐
相关产品推荐

