Ayuda Urgente

smallnett
09 de Febrero del 2004
Hola Tengo un proyecto que hacer en Java en modo grafico(utilizando javax.swing)utilizando unicamente metodos ya lo hize pero tengo muchos errores que no comprendo.
Aqui esta el codigo que tengo si alguien tiene tiempo de revisarlo y ayudarme con los errores se los agradecere mucho.

import javax.swing.*;

class Proyecto
{
static void Grados()
{
JOptionPane.showMessageDialog(null,"CONVERSION DE GRADOS");
JOptionPane.showMessageDialog(null, "1.-C a F, 2.-F a C, 3.-C a K, 4.- K a C, 5.- Salir");
String str = JOptionPane.showInputDialog("Por favor teclee el numero de su opcion");
int g = Integer.parseInt(str);

if (g==1)
{
Centigradosf();
}
if (g==2)
{
Farenheitc();
}
if (g==3)
{
Centigradosk();
}
if (g==4)
{
Kelvinc();
}
if (g==5)
{
Salir();
}
}



static float Pedirgrados()
{
String str = JOptionPane.showInputDialog("Grados a Convertir");
float c = Float.parseFloat(str);
return c;
}

static float Centigradosf(float c)
{
JOptionPane.showMessageDialog(null, "Conversion de Grados Centigrados a Farenheit");
Pedirgrados();
float far= 9f/5f* c+32;
JOptionPane.showMessageDialog(null, "Grados Farenheit = "+far);
Salir();
}


static float Farenheitc(float c)
{
JOptionPane.showMessageDialog(null,"Conversion de Grados Farenheit a Grados Centigrados");
Pedirgrados();
float cen= 5f/9f* c-32;
JOptionPane.showMessageDialog(null, "Grados Centigrados = "+cen);
Salir();
}

static float Centigradosk(float c)
{
JOptionPane.showMessageDialog(null, "Conversion de Grados Centigrados a Grados Kelvin");
Pedirgrados();
float kel = c+273;
JOptionPane.showMessageDialog(null, "Grados Kelvin = "+kel);
Salir();
}

static float Kelvinc(float c)
{
JOptionPane.showMessageDialog(null, "Conversion de Grados Kelvin a Grados Centigrados");
Pedirgrados();
float cen= c - 273;
JOptionPane.showMessageDialog(null, "Grados Centigrados = "+ cen);
Salir();
}

static void Salir()
{
String str = JOptionPane.showInputDialog("Desea hacer otra calculo de grados? 1.- Si 2.- No");
int r= Integer.parseInt(str);
if (r==1)
{
Grados();
}
if (r==2)
{
static void main(String args[]);
}
if(r>=3)
{
JOptionPane.showMessageDialog(null, "Opcion Invalida por favor teclee unicamente 1 o 2 de acuerdo a su preferencia");
}

}
static int Ecuacion()
{
JOptionPane.showMessageDialog(null, "Calculo de una Ecuacion Cuadratica");
String str = JOptionPane.showInputDialog("A=");
int a = Integer.parseInt(str);
String = JOptionPane.showInputDialog("B=");
int b = Integer.parseInt(str);
String = JOptionPane.showInputDialog("C=");
int c = Integer.parseInt(str);

if (a==0)
{
if (b==0)
JOptionPane.showMessageDialog(null, "No es una ecuacion cuadratica");
else
{
float x = -(float)c/(float)b;
JOptionPane.showMessageDialog(null, "Ecuacion lineal x= "+x);
}
}
else
{
int i = b*b-4*a*c;

if (i==0)
{
double x1 = (-b+Math.sqrt(i))/(2*a);
double x2 = (-b-Math.sqrt(i))/(2*a);
JOptionPane.showMessageDialog(null,"Raices reales x1="+x1, x2="+x2);
}
else
JOptionPane.showMessageDialog(null, "Raices Imaginarias");
}
}

static void Preguntar()
{
String str = JOptionPane.showInputDialog("Desea realizar otro cálculo? 1.- si, 2.- No");
int e = Integer.parseInt(str);
if (e==1)
{
main();
}
if (e==2)
{
JOptionPane.showMessageDialog(null, "Gracias por haber usado el Menu");
System.exit(0);
}
if(e>=3)
{
JOptionPane.showMessageDialog(null, "Opcion invalida seleccione 1 o 2 de acuerdo a su preferencia");
}

}

static void Exit()
{
JOptionPane.showMessageDialog(null, "Gracias por haber usado el Menu");
System.exit(0);


}
static float pedirNumero()
{
String str = JOptionPane.showInputDialog("Por favor introduzca el numero");
Float num = Float.parseFloat(str);
return num;
}

static float Factorial(float num)
{
JOptionPane.showMessageDialog(null, "Obtener el Factorial de un numero");
pedirNumero();
float f = 1;
for (float i=1; i<=num; i++)
f= f*1;
JOptionPane.showMessageDialog(null, "El factorial es"+f);
Preguntar();
return f;
}

static float Exponencial()
{
String str = JOptionPane.showInputDialog("Base = ");
float b = Float.parseFloat(str);
String str = JOptionPane.showInputDialog("Exponente=");
float e = Float.parseFloat(str);
float x = 1;
for(float i=1;i<=e;i++)
x = x*b;
Preguntar();
return x;
}

static float Serie(float num, float f, float x)
{
JOptionPane.showMessageDialog(null, "Calcular una serie de n numeros");
pedirNumero();
Factorial();
Exponencial();
float a=1;
for (int i=2;i<num;i++)
a = a+(float)f(i)/(float)x(i,i+1);

JOptionPane.showMessageDialog(null, "El resultado de la serie es"+a);
Preguntar();
}


static void main(String args[])
{
JOptionPane.showMessageDialog(null,"BIENVENIDO AL MENU");
JOptionPane.showMessageDialog(null,"1.- Conversion de Grados, 2.- Calculo de una Ecuacion Cuadratica, 3.- Factorial de un Numero, 4.- Exponencial y=e^x, 5.- Serie N= i^2/2!.., 5.- Salir");
String str = JOptionPane.showInputDialog("Por favor elija su opcion");
int x=Integer.parseInt(str);
if (x==1)
{
Grados();
}
if(x==2)
{
Ecuacion();
}

if (x==3)
{
Factorial(num);
}

if(x==4)
{
Exponencial();
}
if(x==5)
{
Serie(num,f,x);
}
if(x==6)
{
Exit();
}
if(x>=7)
{
JOptionPane.showMessageDialog(null,"Opcion incorrecta por favor seleccione una opcion correcta");
}

}
}

jconejo
09 de Febrero del 2004
la mayoria de los problemas que tenes, son variables que no saon inicializadas y tambien las variables no concuerdan con los tipos a la hora de returnarlas, tambien como recomendacion te diria que trataras de ordenar un poco el codigo y ponerle comentarios para que asi no te pierdas a la hora de los errores

Roger
09 de Febrero del 2004
La verdad es que la forma en que se ha hecho la aplicacion es temeraria. Jamas todos los metodos y variables deben ser static. Si tienes problemas para acceder a ellos desde main, haz esto:
class Clase{
public void metodo(){}
bla bla bla main(bla bla){
Clase s = new Clase();
s.metodo();
}
}
Como ves, no hace falta declarar metodo() como static, simplemente hay que crear un objeto clase y usar su metodo(). Es recomendable que lo hagas asi. E identa el codigo por favor!! Es un absoluto caos :S
Salu2. Roger.