Looping through enums?
本问题已经有最佳答案,请猛点这里访问。
我试图找到一种更好的方法来编写以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public static void initTab(Player player) { player.getPacketSender().sendString(15002,"Achievements -" + amountCompleted(player, Difficulty.TOTAL) +"/30"); player.getPacketSender().sendString(15007,"Easy Tasks -" + amountCompleted(player, Difficulty.EASY) +"/10"); player.getPacketSender().sendString(15008, getColor(player, 0, 0)+Achievements.Tasks.TASK1.getName()); player.getPacketSender().sendString(15009, getColor(player, 1, 0)+Achievements.Tasks.TASK2.getName()); player.getPacketSender().sendString(15010, getColor(player, 2, 0)+Achievements.Tasks.TASK3.getName()); player.getPacketSender().sendString(15011, getColor(player, 3, 0)+Achievements.Tasks.TASK4.getName()); player.getPacketSender().sendString(15012, getColor(player, 4, 0)+Achievements.Tasks.TASK5.getName()); player.getPacketSender().sendString(15013, getColor(player, 5, 0)+Achievements.Tasks.TASK6.getName()); player.getPacketSender().sendString(15014, getColor(player, 6, 0)+Achievements.Tasks.TASK7.getName()); player.getPacketSender().sendString(15015, getColor(player, 7, 0)+Achievements.Tasks.TASK8.getName()); player.getPacketSender().sendString(15016, getColor(player, 8, 0)+Achievements.Tasks.TASK9.getName()); player.getPacketSender().sendString(15017, getColor(player, 9, 0)+Achievements.Tasks.TASK10.getName()); } |
我想用for循环来循环ID(1500815009等等…)但我不知道如何以相同的方式循环枚举值。
我说的是:
我有一个名为tasks的枚举,下面是其中一些值的示例:
1 2 3 4 5 | TASK1(Difficulty.EASY, TaskType.GLOBAL,"Easy Test1","Test Description.", 1, new int[]{8147, 8148}), TASK2(Difficulty.EASY, TaskType.GLOBAL,"Easy Test2","Test Description.", 1, new int[]{8150, 8151}), TASK3(Difficulty.EASY, TaskType.GLOBAL,"Easy Test3","Test Description.", 1, new int[]{8153, 8154}), TASK4(Difficulty.EASY, TaskType.GLOBAL,"Easy Test4","Test Description.", 1, new int[]{8156, 8157}), TASK5(Difficulty.EASY, TaskType.GLOBAL,"Easy Test5","Test Description.", 1, new int[]{8159, 8160}), |
getname()获取值中的第一个字符串:"easy test1"
我想知道的是:一种简单的循环枚举值的方法,这样我可以只在几行代码中对所有值使用getname()方法。
总结
我需要循环此语句:
我需要知道如何做的是循环:
这个问题不是重复的,因为我要求循环处理两个不同的问题。我需要同时循环枚举和一个int(15008、15009等)。不仅仅是枚举,也不仅仅是int。我可以将for enum的for循环嵌套在for int的for循环中吗?
见Oracle文档:
1 2 3 4 5 6 7 8 |
这是演示。