Java - error en java ayuda urgente!

 
Vista:

error en java ayuda urgente!

Publicado por camilo (2 intervenciones) el 30/06/2011 07:59:21
Hola amigos al compilar un codigo en java me sale un error bastante fastidioso que no logro descifrar,porfavor ayudenme,de que se puede tratar?
---------------------------------------------------------------------------

package intdob;

import java.math.*;
import java.util.*;


public class Main {

public static float a,b,c,d;
public static float h;

public static int t;

public static float v[]=new float[t+1];
public static float s[]=new float[t+1];

public static double f(float x,float y)
{
return y*Math.sin(x);
}


public static double g(float r)
{
double sum=f(a,c)+f(b,d);

for(int i=1;i<=t-1;i++)
{
if(i%2==0)
sum=sum+2*f(v[i],r);
else
sum=sum+4*f(v[i],r);
//necesitamos que t sea par
}

sum=sum*h/3;

return sum;
}


public static void main(String[] args) {

System.out.println("escribe la cantidad de subintervalos que deseas inicialmente:");
Scanner n1=new Scanner(System.in);
t=n1.nextInt();

System.out.println("ingrese el valor de a:");
Scanner n2=new Scanner(System.in);
a=n2.nextFloat();

System.out.println("ingrese el valor de b:");
Scanner n3=new Scanner(System.in);
b=n3.nextFloat();

System.out.println("ingrese el valor de c:");
Scanner n4=new Scanner(System.in);
c=n4.nextFloat();

System.out.println("ingrese el valor de d:");
Scanner n5=new Scanner(System.in);
d=n5.nextFloat();




h=(b-a)/t;
float h2=(c-d)/t;



v[0]=a;
s[0]=b;

for(int i=0;i<=t;i++)
{
v[i+1]=v[i]+h;
s[i+1]=s[i]+h2;
}

//-----------------------------
//aqui va la que resuleve la integral:

double suma=g(c)+g(d);

for(int i=1;i<=t-1;i++)
{
if(i%2==0)
suma=suma+2*g(s[i]);
else
suma=suma+4*g(s[i]);
//necesitamos que t sea par
}
suma=suma*h2/3;

System.out.println("el valor de la integral doble es:"+suma);



}

}


-------------------------------------------------------------------------------------
AL CORRER ME SALE ESTE ERROR:

Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:840)
at java.util.Scanner.next(Scanner.java:1461)
at java.util.Scanner.nextFloat(Scanner.java:2319)
at intdob.Main.main(Main.java:64)
Java Result: 1



---------------------------------------
MUCHAS GRACIAS DE ANTEMANO POR LAS RESPUESTAS
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

error en java ayuda urgente!

Publicado por anonymouse (8 intervenciones) el 30/06/2011 16:13:11
Hola Camilo,

el erroe que se me presenta ami es ArrayIndexOutOfBoundsException y es porque usd esta inicializando estos valores de esta forma y globales:

1
2
3
public static int t;
public static float v[]=new float[t+1];
public static float s[]=new float[t+1];



ents que pasa que el vector "v" va a quedar de 1 posicion aunque en el metodo main haga esto

1
2
3
System.out.println("escribe la cantidad de subintervalos que deseas inicialmente:");
Scanner n1=new Scanner(System.in);
t=n1.nextInt();



el erro lo saca justo aqui:
1
2
3
4
5
for(int i=0;i<=t;i++)
{
='editor_indent'>v[i+1]=v[i]+h;
='editor_indent'>s[i+1]=s[i]+h2;
}


ya que t posiblemente tenga un valor mayor que 1 por lo que hace que saque la excepcion
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

error en java ayuda urgente!

Publicado por anonymouse (8 intervenciones) el 30/06/2011 16:17:15
ah, y seme olvidaba el InputMismatchException es porque ingresa un valor que no corresponde con lo esperado por ejem, si hace esto

1
2
Scanner n1=new Scanner(System.in);
t=n1.nextInt();


esta esperando un entero y si le ingresa un caracter saca esta excepcion.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

error en java ayuda urgente!

Publicado por camilo (2 intervenciones) el 01/07/2011 04:02:20
Ok muchas gracias por tu respuesta ,creo entender ahora si a que te refieres,entonces en cierta forma debo definir esos fvectores dentro del main,aunque eso choque un poco con la definicion de mis funciones que hacen uso de los mismos,pero buenoi creo que vere la forma de colocarlos,te reitero mi agradecimiento por la rapida respuesta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

error en java ayuda urgente!

Publicado por gero (20 intervenciones) el 01/07/2011 02:20:02
Hola no tengo para probar aca, pero fijate que estas creando como 4 o 5 instancias des scanner, me parece que puede haber algo que ver con tu error.

Fijate que podes hacer.
Scanner scan = new Scanner(System.in);


y dsp
podes hacer


int entero = scan.nextInt;

float flotante = scan.nextFloar;

String cadena = scan.nextLine (no estoy seguro que sea asi, pero no imoprta).

El hecho es que con una sola instancia llamas al metodo las veces que seas necesaria, no importa el tipo de dato que entra por la consola.

Saludos.


Y otra cosa. Te aconsejo que empeces a usar nombre para tus variable o metos un poco mas significativos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar