Problemas com while

4 respostas
zeimbic

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);}
   }
 }

4 Respostas

D

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

B

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);  
 }    
}
zeimbic

Valeu galera…

D
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:
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);  
 }    
}

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!!!

Criado 13 de novembro de 2010
Ultima resposta 13 de nov. de 2010
Respostas 4
Participantes 3