Matriz fuera de límites>

Necesito crear un programa que calcule el cambio que recibirías, pero dice:

Excepción en el hilo "main" java.lang.ArrayIndexOutOfBoundsException: Índice 9 fuera de límites para la longitud 5 en Main.main (Main.java:34)

Soy bastante nuevo en el uso de matrices en Java, por lo que cualquier puntero sería útil

import java.math.*;

public class Main {

    static int changeTotal, penny, nickel, dime, quarter, dollarBill,  fiveBill, tenBill, twentyBill, fiftyBill, hundredBill;
    static double payed, price;

    public static void main(String args[]) {

        Scanner myScan = new Scanner(System.in);

        System.out.println("Enter cost of item");
        price = myScan.nextDouble();
        System.out.println("Enter money given");
        payed = myScan.nextDouble();

        int priceInt = (int) (price * 100);
        int payedInt = (int) (payed * 100);

        penny = 1;
        nickel = 5;
        dime = 10;
        quarter = 25;
        dollarBill = 100;

        int[] currencyArray = {penny, nickel, dime, quarter, dollarBill};
        int[] changeCount = {0, 0, 0, 0, 0}; 
        if(payed > price) {
        changeTotal = payedInt - priceInt;
        }

        for(int i = 9; i >= 0; i--) {
          int remainder = (changeTotal % currencyArray[i]);
            if(remainder < changeTotal) { 
                changeCount[i] = (changeTotal - remainder) / currencyArray[i]; 
            changeTotal = remainder;
            }
        }

        System.out.println(payed - price);
        System.out.println("Ones: " + changeCount[4]);
        System.out.println("Quarters: " + changeCount[3]);
        System.out.println("Dimes: " + changeCount[2]);
        System.out.println("Nickels: " + changeCount[1]);
        System.out.println("Pennies: " + changeCount[0]);
    }
}
Respuesta 1

Para agregar a las respuestas anteriores, sugeriría usar una referencia a la longitud de la matriz en lugar de cablear el valor. Puede ser una práctica decente entrar en casos como este en los que está utilizando un bucle for para iterar a través de una matriz desde entonces, si la matriz cambia en el futuro por cualquier razón, no tiene que rastrear el valor codificado para ajustarlo también. Algo como for(int i = currencyArray.length - 1; i >= 0; i--)por ejemplo.

Respuesta: 2
int[] currencyArray = {penny, nickel, dime, quarter, dollarBill};

Esto asigna 5 elementos en su matriz y ahora el tamaño de su matriz es 5, lo que significa que puede acceder al índice de 0 a 4.

for(int i = 9; i >= 0; i--) {
          int remainder = (changeTotal % currencyArray[i]);

En estas líneas, está intentando indexar 9 que no está asignado a la matriz. Por lo tanto, está Array fuera del índice enlazado.

Respuesta: 3

Tengo un programa Java para descargar una página web, analizar la página web en busca de imágenes y mostrar el orden en que están en el sitio web. Lo que necesito es que el programa también muestre los tamaños de archivo de cada ...

Lo intenté todo Pero no puedo resolverlo. Siempre me dice que no funcionan ---> mToolbar y Toolbar <--- import android.os.Bundle; importar android.view.MenuItem; importar android.view.View; ...

Tengo un proceso BPEL que invoca un servicio web asíncrono en Java. Tengo un problema para volver a llamar al proceso BPEL cuando finalizo. Recibo un error de tiempo de espera esperando una respuesta. Intenté ...

Tengo un problema de formato ambicioso que tiene varias partes y solo tengo un conocimiento de la programación de Android. Quiero mostrar texto de dos archivos diferentes en líneas alternas: Esto es ...