【问题标题】:Add/Subtract/etc element by the next element in an array通过数组中的下一个元素添加/减去/等元素
【发布时间】:2021-12-09 16:01:00
【问题描述】:

我有一个 [25, -6, 14, 7, 100] 的数组。预期的输出是

Sum:        = 140
Difference: = -90
Product:    = -147000

基本上,下一个元素在循环时被减去/添加到当前元素。这个总和和乘积很简单,我只需要这样做

for (int i = 0; i < array.length; i++) {
  System.out.println(" => " + array[I]);
  sum += i;
  product *= i;
}

问题是当我做difference -= i时,它给了我-108,这是错误的。当数组中只有一个元素时,它给了我元素的负数形式。例如

String[] array = [32] // outputs -32

我尝试循环遍历如下代码:

for (int i = 0; i < arrayNumbers.length; i++) {
  System.out.println(arrayNumbers[i] - arrayNumbers[i + 1]);
}

它给了我Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1

【问题讨论】:

    标签: java arrays for-loop


    【解决方案1】:

    你的计算基于索引,而你必须基于数组[索引]

    var sum=0;
    var difference=0;
    var product=1;
    
    for (int i = 0; i < array.length; i++) {
      System.out.println(" => " + i);
      sum += array[i];
      if (i ==0)
        difference+=array[i];
      else 
        difference-=array[i];
      product *= array[i];
    }
    

    【讨论】:

    • 我不明白你为什么强调我的回答。你的回答不会给你这个结果:)
    • 抱歉不是我。谢谢,这也有效
    • 哦,对了,当数组中有两个连续的负数时会出现错误,例如{-4,-3} 输出 -1。应该是-7
    【解决方案2】:

    找到答案

    int[] array = {25, -6, 14, 7, 100}
    
    int sum = 0;
    int product = 1;
    int difference = 0;
    
    for (int i = 0; i < array.length; i++) {
      System.out.println(" => " + array[i]);
      sum += i;
      product *= I;
      if (i == 0)
        difference = i;
      else
        difference -= i;
    }
    

    【讨论】:

    • 好,值得一试
    【解决方案3】:

    这个例外 “线程“主”java.lang.ArrayIndexOutOfBoundsException 中的异常:索引 1 超出长度 1 的范围” 是由于whin i=arrayNumbers.length-1的原因,那么在代码中:

    arrayNumbers[i + 1] 在访问 arrayNumbers[arrayNumbers.length] 时出现异常;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-22
      • 1970-01-01
      相关资源
      最近更新 更多