【发布时间】:2023-04-06 03:22:01
【问题描述】:
我的目标是通过循环运行此代码来减少代码
each_score = ones(dice_values);
total_score += each_score;
end_scores += String.valueOf(each_score) + " ";
紧随其后
each_score = twos(dice_values);
total_score += each_score;
end_scores += String.valueOf(each_score) + " ";
唯一的区别是第一行的方法。我不知道通过 for 循环之类的方法来做这样的事情,我宁愿不复制粘贴该代码 13 次。 (如果可能的话,我也希望有比开关盒更有效的东西)
private static int ones(int[] dice_values) {
int ones = 0;
for(int i = 0; i < 5; i++)
if(dice_values[i] == 1)
ones++;
return ones;
}
private static int fours(int[] dice_values) {
int fours = 0;
for(int i = 0; i < 5; i++)
if(dice_values[i] == 4)
fours++;
return (fours * 4);
}
private static int five_of_kind(int[] dice_values) {
int five_kind = 0;
int[] five_of = new int[5];
for(int i = 0; i < 5; i++)
five_of[dice_values[i] - 1]++;
if(Arrays.asList(five_of).contains(5))
five_kind = 50;
return five_kind;
}
这是方法的示例。我正在解决一个名为 Yahtzee 的简单问题。给定一组 13 个 5 个骰子的掷骰子,求所有掷骰子的总分和每种得分的总和(以“一个:多少个”或“一个种类的五个”为例)。
【问题讨论】:
-
ones()、twos() 等方法的目的是什么?如果它们具有相似的目的,您可以使用参数 1、2 等创建一个通用函数。
-
我可以结合前 6 种方法来做到这一点,但还有其他方法(4 种,短顺子,长顺子,满屋等)我不能
标签: java loops switch-statement case