Multiplicación polinómica de Java con ArrayList

Tengo un problema con uno de mis métodos en mi programa. El método está diseñado para tomar 2 listas de matrices y realizar la multiplicación entre las dos como un polinomio.

Por ejemplo, si tuviera que decir list1={3,2,1}y list2={5,6,7}; Estoy tratando de obtener un valor de retorno de 15,28,38,20,7. Sin embargo, todo lo que puedo obtener es un mensaje de error que dice:

Excepción en hilo "principal" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0.

He proporcionado el siguiente método:

private static ArrayList<Integer> multiply(ArrayList<Integer> list1,ArrayList<Integer> list2) {

    ArrayList<Integer> array =new ArrayList<Integer>(list1.size()+list2.size());

    for (int i=0;i<array.size();i++)
        array.add(i, 0);

    for (int i = 0; i < list1.size(); i++)

        for (int j = 0; j < list2.size(); j++)

            array.set(i+j, ((list1.get(i) * list2.get(j))+array.get(i+j)));

    return array;

}

Cualquier ayuda para resolver este problema es muy apreciada.

Respuesta 1

Cambie su primer bucle for a:

for (int i = 0 ; i < list1.size() + list2.size() ; i++)
    array.add(0);

Tal como lo tiene, array.size()es inicialmente 0para que el primer bucle nunca se ingrese, por lo que no se agrega nada array. La ArrayListcapacidad de una persona no es lo mismo que su tamaño.

Respuesta: 2

Es posible que desee verificar que exista un elemento en (i+j)antes de resumirlo. Entonces haz esto

int elementAtLoc = 0;
if(array.size() > i+j && array.get(i+j) != null ){
   elementAtLoc = array.get(i+j);
}
array.set(i+j, ((list1.get(i) * list2.get(j))+elementAtLoc));

Y no hay necesidad de esto:

for (int i=0;i<array.size();i++)
    array.add(i, 0);

Como nos ocupamos de establecer 0el segundo ciclo en sí. Le ahorra trabajo adicional de bucle solo para agregar ceros .

Respuesta: 3

Estoy tratando de descomprimir la carpeta que contiene caracteres alemanes, por ejemplo, Aufhänge. Sé que en Java 7, está usando utf-8 por defecto, y creo que "ä" es uno de los caracteres utf-8. Aquí está mi ...

Cómo es que esto funciona: lA = nueva Lista (List.ORDERED, List.ALPHABETICAL); lA.setLowercase (List.LOWERCASE); lA.setPostSymbol (")"); pero esto no: lQL = nueva lista (List.UNORDERED); lQL.setListSymbol ("= ...

Necesito cargar una imagen generada en mi aplicación de escritorio Java. Estoy usando un código similar a este: BufferedImage img = null; pruebe {img = ImageIO.read (nuevo archivo ("strawberry.jpg")); } captura (...

En el siguiente código, los campos miembros del valor ENUM GREEN de Colors no son accesibles fuera de la definición enum: public class Test {enum Colors {RED, GREEN {...