You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java数组筛选问题:如何完成Yahtzee程序的ones求和功能?

解决Yahtzee的aces方法实现问题

核心思路

你的初始判断思路是对的——用if (dice[i] == 1)筛选1,接下来只需要累加符合条件的元素就行,步骤很清晰:

  1. 初始化求和变量:先定义一个int sum = 0,用来存储所有1的总和,初始值设0是因为累加的起点是0。
  2. 遍历数组所有元素:用for循环遍历数组的每一个下标i,这里要注意数组下标是从0开始的,所以循环从i=0开始,直到i < dice.length(dice.length是数组的总长度,保证能遍历到最后一个元素)。
  3. 判断并累加:每次循环里检查dice[i]是否等于1,如果是,就把这个值加到sum里(sum += dice[i]等价于sum = sum + dice[i])。
  4. 输出或返回结果:循环结束后,sum就是所有1的总和,按照要求格式输出即可。

完整代码实现

aces方法的实现

public static int aces(int[] dice) {
    int sum = 0;
    // 遍历数组的每个下标i
    for (int i = 0; i < dice.length; i++) {
        // 检查当前下标对应的元素是否为1
        if (dice[i] == 1) {
            sum += dice[i]; // 累加符合条件的元素
        }
    }
    return sum;
}

主方法处理命令行输入

要实现终端输入java Yahtzee 1 1 1 2 3的效果,还需要在主方法里把命令行参数转成int数组,再调用aces方法:

public static void main(String[] args) {
    // 将命令行的字符串参数转为int数组
    int[] dice = new int[args.length];
    for (int i = 0; i < args.length; i++) {
        dice[i] = Integer.parseInt(args[i]);
    }
    // 调用aces方法计算1的总和
    int onesSum = aces(dice);
    // 按要求输出结果
    System.out.println("sum of ones: " + onesSum);
}

关于数组下标[i]的补充说明

数组下标[i]的作用就是定位数组中的具体元素:

  • 数组的第一个元素是dice[0],第二个是dice[1],以此类推,最后一个元素是dice[dice.length - 1](因为下标从0开始,总长度减1才是最后一个元素的下标)。
  • 循环里i从0递增到dice.length - 1,就能逐个访问数组里的每一个元素,这也是处理数组最常用的方式。

当你输入java Yahtzee 1 1 1 2 3时,args数组里的内容是["1","1","1","2","3"],转成int数组后dice就是[1,1,1,2,3],循环遍历每个元素时,前三个dice[i]都是1,会被累加到sum里,最终sum的值是3,输出符合要求。

内容的提问来源于stack exchange,提问作者Tila tila

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 06:25:26