gpt4 book ai didi

java - 每次循环运行不同的方法

转载 作者:行者123 更新时间:2023-11-30 03:43:33 25 4
gpt4 key购买 nike

我的目标是通过循环运行此代码来减少代码

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 次。 (如果可能的话,我也希望有比 switch case 更有效的东西)

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 个骰子,求出所有掷骰子的总分以及每种类型得分的总和(例如,得分为“一个:有多少个”或“五个相同”)。

最佳答案

您可以在这种情况下使用反射,

string[] methodNames = new string{}["ones","twos",....];
for(string method : methodNames)
{
Method method = this.getClass().getMethod(dice_values.getClass());
each_score = method.Invoke(this,dice_values);
total_score += each_score;
end_scores += String.valueOf(each_score) + " ";
}

关于java - 每次循环运行不同的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26291247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com