• Viernes 19 de Abril de 2024, 08:31

Autor Tema:  Error en java.lang  (Leído 2541 veces)

whistler

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Error en java.lang
« en: Lunes 21 de Mayo de 2012, 17:49 »
0
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
  1. import java.util.Scanner;
  2.  
  3. public class Ejercicio13
  4. {
  5.         public static void main(String[] args)
  6.         {
  7.                 Scanner teclado;
  8.                 Double a, b, dx;
  9.                 int n;
  10.  
  11.                 teclado = new Scanner(System.in);
  12.                 System.out.println("Trabajaremos con f(x) = (x^2)+1");
  13.                 System.out.print("Con que intervalo desea trabajar:? ");
  14.                 a = teclado.nextDouble();
  15.                 b = teclado.nextDouble();
  16.                 System.out.print("Con cuantos sub intervalos desea trabajar:? ");
  17.                 n = teclado.nextInt();
  18.        
  19.                  
  20.                 double [] nArea = new double[n+1];
  21.                 double [] x = new double[n+1];
  22.                 double [] fx = new double[n+1];
  23.                 x[0]=a;
  24.                 fx[0]=(a*a)+1;
  25.                 double areaTotal=0;
  26.                 for(int i=0;i<=n;i++)
  27.                 {
  28.                         dx = (b-a)/n;
  29.                         x[i+1]=x[i]+dx;
  30.                         fx[i+1]=(x[i+1]*x[i+1])+1;
  31.                         nArea[i+1]=dx*(fx[i]+fx[i+1])/2;
  32.                         areaTotal = areaTotal + nArea[i+1];
  33.                 }
  34.                 System.out.println(areaTotal);
  35.         }
  36. }

Me tira el siguiente error java.lang.ArrayIndexOutOfBoundsException: 4 at Ejercicio13.java:29

arielb

  • Moderador
  • ******
  • Mensajes: 771
  • Nacionalidad: pa
    • Ver Perfil
    • http://coder-pa.blogspot.com
Re:Error en java.lang
« Respuesta #1 en: Lunes 21 de Mayo de 2012, 17:58 »
0
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,
"Porque de tal manera amó Dios al mundo que dio a su hijo unigénito para que todo aquél que en él crea no se pierda mas tenga vida eterna"
Juan 3:16

http://coder-pa.blogspot.com

whistler

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re:Error en java.lang
« Respuesta #2 en: Miércoles 23 de Mayo de 2012, 14:52 »
0
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

  • Moderador
  • ******
  • Mensajes: 771
  • Nacionalidad: pa
    • Ver Perfil
    • http://coder-pa.blogspot.com
Re:Error en java.lang
« Respuesta #3 en: Miércoles 23 de Mayo de 2012, 17:37 »
0
Te orientaré a corregir el error

Código: Java(TM) 2 Platform Standard Edition 5.0
  1. double [] nArea = new double[n+1];
  2. double [] x = new double[n+1];
  3. double [] fx = new double[n+1];

Debe quedar así

Código: Java(TM) 2 Platform Standard Edition 5.0
  1. double [] nArea = new double[n];
  2. double [] x = new double[n];
  3. double [] fx = new double[n];

En el ciclo
Código: Java(TM) 2 Platform Standard Edition 5.0
  1. for(int i=0;i<=n;i++)

Lo dejas así
Código: Java(TM) 2 Platform Standard Edition 5.0
  1. for(int i=0;i<n;i++)

Y en donde tengas [i+1] lo dejas así [ i ]

Eso hace que se desborde.

Saludos
"Porque de tal manera amó Dios al mundo que dio a su hijo unigénito para que todo aquél que en él crea no se pierda mas tenga vida eterna"
Juan 3:16

http://coder-pa.blogspot.com

david_lomber

  • Miembro activo
  • **
  • Mensajes: 34
  • Nacionalidad: mx
  • Impossible is nothing, just do it!!
    • Ver Perfil
    • Pelis DVDRip
Re:Error en java.lang
« Respuesta #4 en: Lunes 28 de Mayo de 2012, 03:32 »
0
Creo que donde esta el error (por asi decirlo) es en los:

Código: Java(TM) 2 Platform Standard Edition 5.0
  1.                         x[i+1]=x[i]+dx;
  2.                         fx[i+1]=(x[i+1]*x[i+1])+1;
  3.                         nArea[i+1]=dx*(fx[i]+fx[i+1])/2;
  4.                         areaTotal = areaTotal + nArea[i+1];

mas especifico los:

Código: Java(TM) 2 Platform Standard Edition 5.0
  1. [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!!