java деление массива по его элементам

#java #arrays

#java #массивы

Вопрос:

Я хочу разделить элементы моего массива для первого элемента массива, метод работает нормально, но последний элемент не был разделен.

Я думаю, что мне пришлось использовать <= array.length … , но это, очевидно, дает мне исключение array out of bound. Как я могу добиться этого без <=length . PS: первый элемент не следует опускать / принимать во внимание, поскольку это дивиденд. Мой код следующий:

 public class Ris
{
    public static void main()
    {
        double[] testResult = {2.0, 3.6, 5.0, 2.0};
        for(int element = 0; element < testResult.length; element  ){
            if( testResult[element] > testResult[0]){//excludes 1st element
                testResult[element] = testResult[element] / testResult[0] ;// divides elements by first element 0
            }
          System.out.println(testResult[element]); 

        }
    }
}
  

Ответ №1:

Вы пропускаете первый элемент в плохой манере —

 if( testResult[element] > testResult[0]){
  

Пропускает все, что не больше первого элемента — больше 2.0

Вероятно, вам нужно протестировать

 if( element > 0){
  

Но вы также можете просто пропустить первый элемент в определении for cycle

 for(int element = 1; element < testResult.length; element  ){
  

Ответ №2:

 if( testResult[element] > testResult[0]){//excludes 1st element
  

Здесь вы тестируете значения, а не позиции. Попробуйте это вместо:

 public class Ris
{
public static void main()
{
    double[] testResult = {2.0, 3.6, 5.0, 2.0};
    for(int element = 1; element < testResult.length; element  ){
    testResult[element] = testResult[element] / testResult[0] ;// divides elements by first element 0
      System.out.println(testResult[element]); 

    }
}
}
  

Ответ №3:

Вместо:

 if( testResult[element] > testResult[0]){//excludes 1st element
  

Вы должны использовать:

 if(element > 0){//excludes 1st element
  

чтобы исключить 1-й элемент.

Или пусть ваш цикл for начинается с 1-й позиции (пропустите 0-ю позицию):

 for(int element = 1; element < testResult.length; element  )
  

Ответ №4:

Чтобы исключить первый элемент, вы должны начать отсчет с 1, а не с 0. Т.е. измените на

 for (int element = 1; ....
  

Ответ №5:

В более общем плане, плохой практикой является объединение всех ваших переменных в один массив или использование одной и той же переменной для ввода и вывода. Вы скорее должны иметь:

 double denominator = 2.0;
double[] inputValues = new double[]{3.6, 5.0, 2.0};
double[] outputValues = new double[inputValues.length];
  

Если вы сделаете это вместо этого, for цикл теперь начинается с элемента 0 и заканчивается перед ( < ) inputValues.length , как обычно и строятся for циклы.