Programación General > Java
Error en java.lang
(1/1)
whistler:
Hola amigos de solocodigo, miren el siguiente codigo en mi logica al parecer esta bien pero me tira error y no puedo interpretarlo en que me confundi? gracias x adelantado
--- Código: Java(TM) 2 Platform Standard Edition 5.0 ---import java.util.Scanner; public class Ejercicio13{ public static void main(String[] args) { Scanner teclado; Double a, b, dx; int n; teclado = new Scanner(System.in); System.out.println("Trabajaremos con f(x) = (x^2)+1"); System.out.print("Con que intervalo desea trabajar:? "); a = teclado.nextDouble(); b = teclado.nextDouble(); System.out.print("Con cuantos sub intervalos desea trabajar:? "); n = teclado.nextInt(); double [] nArea = new double[n+1]; double [] x = new double[n+1]; double [] fx = new double[n+1]; x[0]=a; fx[0]=(a*a)+1; double areaTotal=0; for(int i=0;i<=n;i++) { dx = (b-a)/n; x[i+1]=x[i]+dx; fx[i+1]=(x[i+1]*x[i+1])+1; nArea[i+1]=dx*(fx[i]+fx[i+1])/2; areaTotal = areaTotal + nArea[i+1]; } System.out.println(areaTotal); }}
Me tira el siguiente error java.lang.ArrayIndexOutOfBoundsException: 4 at Ejercicio13.java:29
arielb:
Hola, bienvenido al foro.
Con decirle al ciclo que avance mientras sea <= y sumarle uno siempre al índice del arreglo te estás pasando del límite del arreglo.
Cambia esa parte de tú lógica y debe solucionar el error.
Saludos,
whistler:
Me gustaria k lo compiles y me des tu punto de vista del error el problema, no va x como dices, para que tengas nocion de lo que kiero resolver en ese codigo mencionare el problema, se pide hallar el area bajo la grafica de una funcion positiva para la cual declaro como funcion f(x)=x*x+1 se pide hallarlo por el metodo de integracion numérica tambien conocida como "Regla trapezoidal" al hacer pruebas en papel debería funcionar pero al codificar me tira el error que menciono.
arielb:
Te orientaré a corregir el error
--- Código: Java(TM) 2 Platform Standard Edition 5.0 ---double [] nArea = new double[n+1];double [] x = new double[n+1];double [] fx = new double[n+1];
Debe quedar así
--- Código: Java(TM) 2 Platform Standard Edition 5.0 ---double [] nArea = new double[n];double [] x = new double[n];double [] fx = new double[n];
En el ciclo
--- Código: Java(TM) 2 Platform Standard Edition 5.0 ---for(int i=0;i<=n;i++)
Lo dejas así
--- Código: Java(TM) 2 Platform Standard Edition 5.0 ---for(int i=0;i<n;i++)
Y en donde tengas [i+1] lo dejas así [ i ]
Eso hace que se desborde.
Saludos
david_lomber:
Creo que donde esta el error (por asi decirlo) es en los:
--- Código: Java(TM) 2 Platform Standard Edition 5.0 --- x[i+1]=x[i]+dx; fx[i+1]=(x[i+1]*x[i+1])+1; nArea[i+1]=dx*(fx[i]+fx[i+1])/2; areaTotal = areaTotal + nArea[i+1];
mas especifico los:
--- Código: Java(TM) 2 Platform Standard Edition 5.0 ---[i+1]
ya que por ejemplo le das un tamaño a los vectores de n+1 los cuales tienen las posiciones desde 0 hasta n, entonces mientras i<n todo va bien, pero cuando llega a i=n al usar i+1 estas intentando acceder a la posicion n+1 del vector, que no existe :S
Saludos!!
Navegación
Ir a la versión completa