Добавьте/Вычтите/и т.д. элемент следующим элементом в массиве

#java #arrays #for-loop

Вопрос:

У меня есть массив с [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

Ответ №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];
}
 

Комментарии:

1. я не понял, почему вы подчеркнули мой ответ . ваш ответ не даст вам такого результата 🙂

2. извини, что это был не я. и спасибо, это тоже сработало

3. ах да, есть ошибка, когда в массиве есть два последовательных отрицательных числа, например {-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;
}
 

Комментарии:

1. ну что ж, стоит попробовать

Ответ №3:

Это исключение «Исключение в потоке «основной» java.lang.Исключение ArrayIndexOutOfBoundsException: Индекс 1 выходит за пределы длины 1″ связано с тем,что whin i=arrayNumbers.length-1, затем в коде:

номера массивов[i 1] дают исключение при доступе к номерам массивов[arrayNumbers.length];