2016-05-17 1 views
0

Метод product() умножает элементы массива ArrayList и возвращает целое число «n», которое является умножением этих элементов. В классе Test() вызовите метод product(), который работает в ArrayList с именем lis и напечатает значение «n».Метод, который muliply elemente списка, с ArrayList как параметр

import MathBasic.SimpFraction; 
import java.util.ArrayList; 

public class Test { 

public static void main(String[] args) { 

    ArrayList<Integer> lis = new ArrayList<>(); 

    for (int i=1;i<=6;i++){ 
     lis.add(i); 
    } 

    int result = SimpFraction.product(lis); 

    System.out.println(result); 
    } 
} 

//mathbasic package 

package MathBasic; 

import java.util.ArrayList; 

public class SimpFraction { 
    public static int product (ArrayList<Integer> m){ 
     int n = 1; 
     for (int i = 0; i <= m.size(); i++) 
      n = n*m.get(i); 
     return n; 
    } 
} 

При компиляции кода, она генерирует ошибку: благородные предшественники

run: 
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 6, Size: 6 
    at java.util.ArrayList.rangeCheck(ArrayList.java:653) 
    at java.util.ArrayList.get(ArrayList.java:429) 
    at MathBasic.SimpFraction.product(SimpFraction.java:94) 
    at cubicequationTest.main(cubicequationTest.java:32) 
C:\(...)\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1 
FALHA NA CONSTRUÇÃO (tempo total: 0 segundos) 

ответ

0

в вашей цикл в метод продукта граничное условие является неправильным. Вы хотите достичь элемента с индексом 6, однако, аррайалист с размером 6 имеет максимальное число 5 в качестве индекса.

1

Вы правильно зацикливаетесь.

public class SimpFraction { 
    public static int product (ArrayList<Integer> m){ 
     int n = 1; 
     for (int i = 0; i <= m.size(); i++)//this is incorrect 
      n = n*m.get(i); 
     return n; 
    } 
} 

Приведенный выше код имеет вы зацикливание от 0, 1, 2, 3, 4, 5, 6. Есть 7 всего приросты там, когда размер вашего списка только 6

Поскольку первый индекс любого списка 0, и ваш int i = 0 вы должны изменить <= к <

как так

for (int i = 0; i < m.size(); i++)//this is correct 

это будет петля 0, 1, 2, 3, 4 , 5, а не минус общее число индексов

+0

Это работает! Благодарю. Я перехожу от python к java, и я не знаком с ним. –

+0

@ Edilon Junior Glad Я могу помочь! Не могли бы вы отметить этот ответ правильно, если он исправит вашу проблему? Благодаря! :) – sbowde4

Смежные вопросы