Java - no me funciona un codigo

 
Vista:

no me funciona un codigo

Publicado por qudus (2 intervenciones) el 24/07/2020 00:33:03
Buenas queridos programadores,estoy iniciando en este mundillo.He estado programando un programa que nos pida introducir nuestro genero,luego el program calculara nuestro "supuesto peso ideal".Pero no me corre el codigo. Os lo dejo por aqui,espero que me ayuden =
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import java.util.*;
import javax.swing.*;
public class DoWhile {
    Scanner entrada= new Scanner(System.in);
    String genero="";
    String a= "masculino";
    String b= "femenino";
 
    {
		do{
			System.out.println("introduzca su genero= \n1:masculino \n2:femenino");
			genero=entrada.nextLine();
 
			int altura=Integer.parseInt(JOptionPane.showInputDialog("introduzca la altura"));
 
			if (genero.equals(a)==true){
				System.out.println("el peso ideala es " +  (altura-110));
 
			}
			if (genero.equals(b)==true){
				System.out.println("el peso ideala es " +  (altura-120));
 
			}
 
 
		}while(genero.equals(a)==false && genero.equals(b));
 
    }
}
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
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

no me funciona un codigo

Publicado por Kabuto (1381 intervenciones) el 24/07/2020 01:34:25
A ver.

Falta algo muy importante, el método main()

Todos programa Java ha de tener un método main(), que es el que hace que todo se ponga en marcha.
Dentro de este método es donde has de escribir que quieres ejecutar.

Otra cosa, aunque no afecta al funcionamiento realmente, en las condiciones de los if cuando usas equals() no es necesario comparar con true o con false

1
if (genero.equals(a)==true){

El equals(), ya te devuelve true o false, que es todo lo que necesita el if.

Mira, si lo ponemos así:
1
if (genero.equals(a)){

Ahi ya estás preguntando --> si (true) haz....
Y eso es suficiente.

Si pones esto:
1
if (genero.equals(a)==true){
Ahí estás preguntando --> si (true es igual a true) haz....

Es una pregunta redundante, el programa va a funcionar igual, pero no es necesario ponerlo así y te ahorras código.

Cuando en lugar de preguntar --> si (true), quieras preguntar lo contrario --> si (false)
Entonces puedes usar el signo de admiración delante de la condicion para "negarla".
Esto:
1
if (!genero.equals(a)){
equivale a esto:
1
if (genero.equals(a)==false){

Ahora bien, es posible que al empezar a programar, para ti mismo te resulte más claro comparar con true y con false. No hay problema, sigue haciéndolo (yo lo hacía) y cuando cojas más práctica en programación irás cambiando tus hábitos.

Otra cosa, el JOptionPane. Tal cuál lo has puesto funciona, pero es muy probable que aparezca en segundo plano y si tienes abierto algún otro programa, incluso el IDE que estés usando (como NetBeans, Eclipse, etc..) no verás la ventanita del JOptionPane y pensarás que no ha funcionado.
Pero si lo ha hecho, lo que pasa es que se queda detrás. Búscalo pulsando ALT + TAB o minimizando otras ventanas que tengas abiertas.
Esto es porque es un programa sin interfaz gráfica, y entonces el JOptionPane suele quedarse por detrás.


Por último, no tengo claro la intencionalidad de la condición de tu bucle while(). Si se introduce femenino, se repite. Pero si se introduce masculino, no. ¿es eso lo que quieres?

Lo lógico sería preguntar al usuario si quiere continuar o poner fin al programa.

Puedes preguntarlo por consola, o bien usar otro tipo de JOptionPane con botones para que el usuario elija si o no.

Mira, te dejo el código modificado, añadiendo el método main, cambiando las condiciones de los if (tú ponlos como mejor te entiendas) y usando un JOptionPane para decidir si el bucle while se repite o no.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class DoWhile {
 
	public static void main(String[] args) {
 
		Scanner entrada= new Scanner(System.in);
		String genero="";
		String a= "masculino";
		String b= "femenino";
 
		do{
			System.out.println("introduzca su genero= \n1:masculino \n2:femenino");
			genero=entrada.nextLine();
 
			int altura=Integer.parseInt(JOptionPane.showInputDialog("introduzca la altura"));
 
			if (genero.equals(a)){
				System.out.println("el peso ideala es " + (altura-110));
 
			}
			if (genero.equals(b)){
				System.out.println("el peso ideala es " + (altura-120));
 
			}
 
		}while(JOptionPane.showConfirmDialog(null, "¿Desea repetir?") == JOptionPane.YES_OPTION);
 
		System.out.println("\n\nFIN DE PROGRAMA");
		entrada.close();
	}
}



Por último, no tengo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

no me funciona un codigo

Publicado por quds (2 intervenciones) el 24/07/2020 01:41:13
muchísimas gracias por la ayuda,se ve que he borrado el main.Y gracias por los consejos.Un saludo
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