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

Java实现数组元素减法运算输出结果不符合预期问题咨询

代码问题分析

你给出的代码运行结果不符合预期,核心是计算逻辑和绝对值使用错误,具体原因如下:

  • 首先明确你的预期计算规则:从你给出的测试用例{13,17,14}对应预期输出(0,4,-16)可反推,你需要的逻辑是:
    • 数组第0位固定输出0
    • 第j位(j≥1)的结果 = 第j位的元素值,减去它前面所有元素的和
  • 你的代码存在3个核心错误:
    1. 每步减法后多余的绝对值转换:你在内层循环中每次计算temp后都调用了Math.abs(temp),会把所有负数转为正数,直接导致不可能得到-16这类负数结果。
    2. 计算逻辑完全不匹配:你代码中temp初始值为0,且内层循环从j位开始依次减到0位,等价于计算的是| | |0 - numbers[j]| - numbers[j-1] | ... - numbers[0]|,和你预期的「当前元素减前面所有元素和」的逻辑完全不符。以j=2为例,你的代码计算过程是:| | |0-14| -17| -13| = 10,就是你实际得到的结果。
    3. 冗余无效判断:内层循环的if(i > numbers.length-1) break没有任何作用,i从j递减到0,j最大为数组长度-1,i不可能超过数组下标上限。
修复后代码
List<Double> list2 = new ArrayList<Double>();
double[] numbers= {13,17,14};
// 第0位固定加0
list2.add((double)0);

for(int j = 1; j < numbers.length; j++) {
    // 初始值设为当前j位的元素值
    double temp = numbers[j];
    // 依次减去前面所有0到j-1位的元素
    for (int i = 0; i < j; i++) {
        temp -= numbers[i];
    }
    list2.add(temp);
}
System.out.println("Answer --> "+list2);

运行后输出为Answer --> [0.0, 4.0, -16.0],符合你的预期。

内容的提问来源于stack exchange,提问作者Uday Surse

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 02:54:03