Problemas com while

iai pessoal eu fiz uma pequena calculadora, e coloquei um menu tentando usar While
porem eu nao estou conseguindo fazer ele retorna no ponto que preciso, e quando consigo eu
tenho que iniciar a variavel… a e tambem a opcão SAIR que coloque devido o erro com o laço … ela nao funciona

esta ai oque eu ja fiz … no mais aceito dicas para melhorar o codigo tambem… abraço…

package calculadora;

import javax.swing.JOptionPane;

public class Main {

    public static void main(String[] args) {

    int num1 = 0;
    int num2 = 0;
    int resultado;
    int menu = 0; // meu problema esta aqui ... eu não posso iniciar esta variavel
    String op1;
    String op2;


  JOptionPane.showMessageDialog(null,"Bem Vindo a Calculadora JAVA");
 
  while (menu != 0 ){ // e aqui tambem

  String opcao = JOptionPane.showInputDialog(" [1] SOMA\n [2] SUBTRAÇÃO\n "
          +"[3] MULTIPLICAÇÃO\n [4] DIVISÃO\n [0] SAIR");

    menu = Integer.parseInt(opcao);

     op1 = JOptionPane.showInputDialog("Digite o 1º Valor");
     num1 = Integer.parseInt(op1);

     op2 =  JOptionPane.showInputDialog("Digite o 2º Valor");
     num2 = Integer.parseInt(op2);

     if (menu == 1 )
     {
      resultado = num1 + num2; 
      JOptionPane.showMessageDialog(null,"O resultado da Operação foi : " + resultado);
     }
     if (menu == 2)
     {
     resultado = num1 - num2;
     JOptionPane.showMessageDialog(null,"O resultado da Operação foi : " + resultado);
     }
     if (menu == 3)
     {
     resultado = num1 * num2;
     JOptionPane.showMessageDialog(null,"O resultado da Operação foi : " +  resultado);
     }
     if (menu == 4 )
     {
     resultado = num1 / num2;
     JOptionPane.showMessageDialog(null,"O resultado da Operação foi : " + resultado);
     }
   }
  if (menu == 0){System.exit(0);}
   }
 }

  
    

1º problema = ele nao esta entrando no WHILE
2º problema = o seu IF que compara o menu=0 esta fora do while…

sugestao = use o do{ …}while(menu!=0);

import javax.swing.JOptionPane;

public class Main {

    public static void main(String[] args) {

        int num1 = 0;
        int num2 = 0;
        int resultado;
        int menu = 0;
        String op1;
        String op2;


        JOptionPane.showMessageDialog(null, "Bem Vindo a Calculadora JAVA");

        do {

            String opcao = JOptionPane.showInputDialog(" [1] SOMA\n [2] SUBTRAÇÃO\n "
                    + "[3] MULTIPLICAÇÃO\n [4] DIVISÃO\n [0] SAIR");

            menu = Integer.parseInt(opcao);
             if (menu == 0) {
                System.exit(0);
            }

            op1 = JOptionPane.showInputDialog("Digite o 1º Valor");
            num1 = Integer.parseInt(op1);

            op2 = JOptionPane.showInputDialog("Digite o 2º Valor");
            num2 = Integer.parseInt(op2);

            if (menu == 1) {
                resultado = num1 + num2;
                JOptionPane.showMessageDialog(null, "O resultado da Operação foi : " + resultado);
            }
            if (menu == 2) {
                resultado = num1 - num2;
                JOptionPane.showMessageDialog(null, "O resultado da Operação foi : " + resultado);
            }
            if (menu == 3) {
                resultado = num1 * num2;
                JOptionPane.showMessageDialog(null, "O resultado da Operação foi : " + resultado);
            }
            if (menu == 4) {
                resultado = num1 / num2;
                JOptionPane.showMessageDialog(null, "O resultado da Operação foi : " + resultado);
            }
           
        } while (menu != 0);
    }
}

vlw

acho q vc poderia trocar o while por do, while
assim ele executa no minimo uma vez, quando o 0 for digitado ele sai do programa.

ficaria assim:


public class Main {
 package calculadora;  
   
 import javax.swing.JOptionPane;  
   
 public class Main {  
   
     public static void main(String[] args) {  
   
     int num1 = 0;  
     int num2 = 0;  
     int resultado;  
     int menu = 0; // meu problema esta aqui ... eu não posso iniciar esta variavel  
     String op1;  
     String op2;  
   
   
   JOptionPane.showMessageDialog(null,"Bem Vindo a Calculadora JAVA");  
   
   do{ // e aqui tambem  
   
   	String opcao = JOptionPane.showInputDialog(" [1] SOMA\n [2] SUBTRAÇÃO\n "  
           +"[3] MULTIPLICAÇÃO\n [4] DIVISÃO\n [0] SAIR");  
   
   	  menu = Integer.parseInt(opcao);  
   
     	 op1 = JOptionPane.showInputDialog("Digite o 1º Valor");  
      num1 = Integer.parseInt(op1);  
   
      op2 =  JOptionPane.showInputDialog("Digite o 2º Valor");  
      num2 = Integer.parseInt(op2);  
   
      if (menu == 1 )  
      {  
       resultado = num1 + num2;   
       JOptionPane.showMessageDialog(null,"O resultado da Operação foi : " + resultado);  
      }  
      if (menu == 2)  
      {  
      resultado = num1 - num2;  
      JOptionPane.showMessageDialog(null,"O resultado da Operação foi : " + resultado);  
      }  
      if (menu == 3)  
      {  
      resultado = num1 * num2;  
      JOptionPane.showMessageDialog(null,"O resultado da Operação foi : " +  resultado);  
      }  
      if (menu == 4 )  
      {  
      resultado = num1 / num2;  
      JOptionPane.showMessageDialog(null,"O resultado da Operação foi : " + resultado);  
      }  
    }  
   }while(menu != 0);  
 }    
}

Valeu galera…

[quote=Benmaluco]
acho q vc poderia trocar o while por do, while
assim ele executa no minimo uma vez, quando o 0 for digitado ele sai do programa.

ficaria assim:

[code]

public class Main {
package calculadora;

import javax.swing.JOptionPane;

public class Main {

 public static void main(String[] args) {  

 int num1 = 0;  
 int num2 = 0;  
 int resultado;  
 int menu = 0; // meu problema esta aqui ... eu não posso iniciar esta variavel  
 String op1;  
 String op2;  

JOptionPane.showMessageDialog(null,“Bem Vindo a Calculadora JAVA”);

do{ // e aqui tambem

String opcao = JOptionPane.showInputDialog(" [1] SOMA\n [2] SUBTRAÇÃO\n "  
       +"[3] MULTIPLICAÇÃO\n [4] DIVISÃO\n [0] SAIR");  

  menu = Integer.parseInt(opcao);  

 	 op1 = JOptionPane.showInputDialog("Digite o 1º Valor");  
  num1 = Integer.parseInt(op1);  

  op2 =  JOptionPane.showInputDialog("Digite o 2º Valor");  
  num2 = Integer.parseInt(op2);  

  if (menu == 1 )  
  {  
   resultado = num1 + num2;   
   JOptionPane.showMessageDialog(null,"O resultado da Operação foi : " + resultado);  
  }  
  if (menu == 2)  
  {  
  resultado = num1 - num2;  
  JOptionPane.showMessageDialog(null,"O resultado da Operação foi : " + resultado);  
  }  
  if (menu == 3)  
  {  
  resultado = num1 * num2;  
  JOptionPane.showMessageDialog(null,"O resultado da Operação foi : " +  resultado);  
  }  
  if (menu == 4 )  
  {  
  resultado = num1 / num2;  
  JOptionPane.showMessageDialog(null,"O resultado da Operação foi : " + resultado);  
  }  
}  

}while(menu != 0);
}
}
[/code][/quote]

procure dar sugestões DIFERENTES…
disse a msm coisa que eu, e ainda dxou um erro…
percebeu q se vc digita 0, ele vai pedir os dois numeros para só depois sair???
nem pra isso vc se atentou!!!