While

12 respostas
zeimbic

iai pessoal eu estou com dificudade no uso do while
eu fiz este codigo para uma calculadora mais ele não esta copilando o calculo e volta para o menu
eu ja tentei um monte de coisa da uma força ai ou algum dica para melhor estruturação valeu..

int opcao;
        int entrada;
        int entrada2 = 0;
        int soma = 1;
        int div = 2;
        int subtr = 3;
        int mult = 5;

        do {
            JOptionPane.showMessageDialog(null, " Bem vindo a calculadora");

            opcao = Integer.valueOf(JOptionPane.showInputDialog("Para as seguintes Operações use\n\n" +
                    " Soma [1]\n Divisão [2]\n Subtração [3]\n Multiplicação [5]\n Sair [0]"));

            entrada = Integer.valueOf(JOptionPane.showInputDialog("entre com 1º valor "));
            
        }
        while (entrada != 0);

        if (opcao == soma) {
             entrada = entrada + entrada2;
            JOptionPane.showMessageDialog(null, entrada);
        } else if (opcao == div) {
             entrada = entrada / entrada2;
             JOptionPane.showMessageDialog(null, entrada);
        } else if (opcao == mult) {
           entrada = entrada * entrada2;
             JOptionPane.showMessageDialog(null, entrada);
        } else if (opcao == subtr) {
            entrada = entrada - entrada2;
            JOptionPane.showMessageDialog(null, entrada);
        }
       
        
    }
}
:lol:[color=red]Resolvido[/color] :lol:

12 Respostas

thiago.correa

Para compilar as variáveis opcao e entrada devem ser inicializadas com algum valor!

britotr

zeimbic… na verdade nesse caso não há necessidade de laço, pois se vc deixar assim:

while (opcao == 0);

ele não vai sair e no menu 0 é pra sair!!!

porem se vc deixar

while (opcao != 0);

ele nao vai sair enquanto vc nao digitar 0… aí sairia do programa…

vc pode fazer o seguinte… vou mudar e te mostrar…

britotr

veja o que eu fiz… acredito que melhorou… porem dá pra melhorar mais com mais algum metodo como pra exibir etc…

import javax.swing.JOptionPane;

public class NewClass{
    public static void main (String []args){


int  opcao;

         int entrada;
         int entrada2 = 0;
         int soma = 1;
         int div = 2;
         int subtr = 3;
         int mult = 5;

float saida = 0.0f;


             JOptionPane.showMessageDialog(null, " Bem vindo a calculadora");

             opcao = Integer.valueOf(JOptionPane.showInputDialog("Para as seguintes Operações use\n\n" +
                     " Soma [1]\n Divisão [2]\n Subtração [3]\n Multiplicação [5]\n Sair [0]"));

           
         if (opcao == soma) {
              entrada = receberNumero();
              entrada2 = receberNumero();
              saida = entrada + entrada2;
             JOptionPane.showMessageDialog(null, saida);
         } else if (opcao == div) {
              entrada = receberNumero();
              entrada2 = receberNumero();
              saida = entrada / entrada2;
              JOptionPane.showMessageDialog(null, saida);
         } else if (opcao == subtr) {
              entrada = receberNumero();
              entrada2 = receberNumero();
              saida = entrada - entrada2;
              JOptionPane.showMessageDialog(null, saida);
         } else if (opcao == mult) {
              entrada = receberNumero();
              entrada2 = receberNumero();
              saida = entrada * entrada2;
             JOptionPane.showMessageDialog(null, saida);
         }


     }

    private static int receberNumero(){
        return  Integer.valueOf(JOptionPane.showInputDialog("entre com 1º valor e sem seguida com o 2º valor "));
    }
}
LucasAdri07

Fiz um projeto parecido, ele ficou assim:

import javax.swing.JOptionPane;

public class Addition {

    public static void main(String args[]) {
        double number1, number2, result = 0;
        int operacao;
        String op;

        number1 = Double.parseDouble(JOptionPane.showInputDialog("Digite o primeiro numero inteiro"));
        op = JOptionPane.showInputDialog("Digite a operação desejada:\n    +    -    /    *  ");

        while (!op.equals("+") && !op.equals("-") && !op.equals("/") && !op.equals("*")) {
            op = JOptionPane.showInputDialog("Esta operação não existe \nDigite a operação desejada:\n    +    -    /    *  ");
        }

        operacao = op.charAt(0);
        number2 = Double.parseDouble(JOptionPane.showInputDialog("Digite o segundo numero inteiro"));

		switch (operacao) {
		case '+':
			result = number1 + number2;
			break;
		case '-':
			result = number1 - number2;
			break;
		case '*':
			result = number1 * number2;
			break;
		case '/':
			result = number1 / number2;
			break;
		}
        JOptionPane.showMessageDialog(null, "O resultado de " + number1 + op
				+ number2 + " = " + result, "Resultado",
				JOptionPane.QUESTION_MESSAGE);

		System.exit(0);
	}
}

Veja que só usei o While, para a repetição da condição de que se o usuario digitasse uma operação invalida iria abrir uma mensagem

britotr

como o lucasadri07 usou ficou beleza… porem se vc quiser usar o while com numeros… seguindo o mesmo esquema de switch case tambem… fica assim…

import javax.swing.JOptionPane;

public class NewClass {

    public static void main(String[] args) {
        int opcao = 0, entrada = 0, entrada2 = 0;
        float saida = 0.0f;

        JOptionPane.showMessageDialog(null, " Bem vindo a calculadora");
        while (opcao < 0 || opcao > 4) {
            opcao = Integer.valueOf(JOptionPane.showInputDialog("Para as seguintes Operações use\n\n"
                    + " Soma [1]\n Divisão [2]\n Subtração [3]\n Multiplicação [4]\n Sair [0]"));
        }

        switch (opcao) {
            case 1:  entrada = receberNumero();
            entrada2 = receberNumero();
            saida = entrada + entrada2;
            JOptionPane.showMessageDialog(null, saida);
            break;
            
            case 2: 
            entrada = receberNumero();
            entrada2 = receberNumero();
            saida = entrada / entrada2;
            JOptionPane.showMessageDialog(null, saida);
            break;
            
            case 3:
            entrada = receberNumero();
            entrada2 = receberNumero();
            saida = entrada - entrada2;
            JOptionPane.showMessageDialog(null, saida);
        break;
            case 4:
            entrada = receberNumero();
            entrada2 = receberNumero();
            saida = entrada * entrada2;
            JOptionPane.showMessageDialog(null, saida);
            break;
        }
    }
        

    private static int receberNumero() {
        return Integer.valueOf(JOptionPane.showInputDialog("entre com 1º valor e sem seguida com o 2º valor "));
    }
}
LucasAdri07

Gostei da menssagem.“Bem vindo à Calculadora”
Vou colocar na minha…

Brito, fui rodar o que você colocou, ele para de executar no “Bem Vindo à Calculadora”.

lina

Oi,

Algo do tipo:

public static void main(String args[])
	{
		JOptionPane.showMessageDialog(null, " Bem vindo a calculadora");

		int opcao = 0;

		do
		{
			opcao = Integer
					.parseInt((JOptionPane
							.showInputDialog("Para as seguintes Operações use\n\n"
									+ " Soma [1]\n Divisão [2]\n Subtração [3]\n Multiplicação [4]\n Sair [0]")));

			switch (opcao)
			{
				case 1:

					// Fazer os calculos.
					break;

				case 2:

					// Fazer os calculos.
					break;

				case 3:

					// Fazer os calculos.
					break;

				case 4:

					// Fazer os calculos.
					break;

				case 0:

					JOptionPane.showMessageDialog(
							null,
							"Diga Tchau Lilica");

					break;

				default:

					JOptionPane.showMessageDialog(
							null, "Opção inválida");

					break;
			}
		}
		while (opcao != 0);
	}

Tchauzin!

LucasAdri07
lina:
Oi,

Algo do tipo:

public static void main(String args[])
	{
		JOptionPane.showMessageDialog(null, " Bem vindo a calculadora");

		int opcao = 0;

		do
		{
			opcao = Integer
					.parseInt((JOptionPane
							.showInputDialog("Para as seguintes Operações use\n\n"
									+ " Soma [1]\n Divisão [2]\n Subtração [3]\n Multiplicação [4]\n Sair [0]")));

			switch (opcao)
			{
				case 1:

					// Fazer os calculos.
					break;

				case 2:

					// Fazer os calculos.
					break;

				case 3:

					// Fazer os calculos.
					break;

				case 4:

					// Fazer os calculos.
					break;

				case 0:

					JOptionPane.showMessageDialog(
							null,
							"Diga Tchau Lilica");

					break;

				default:

					JOptionPane.showMessageDialog(
							null, "Opção inválida");

					break;
			}
		}
		while (opcao != 0);
	}

Tchauzin!

Estava faltando no projeto dele, no caso de o usuario digitar uma operação invalida, pedir para digitar novamente...

britotr

é… eu havia feito errado… hehehe

ficaria

do {
            opcao = Integer.valueOf(JOptionPane.showInputDialog("Para as seguintes Operações use\n\n"
                    + " Soma [1]\n Divisão [2]\n Subtração [3]\n Multiplicação [4]\n Sair [0]"));
        } while (opcao < 0 || opcao > 4);
pedroroxd

lina:
Oi,

Algo do tipo:

.
.
.
.
				case 0:

					JOptionPane.showMessageDialog(
							null,
							"Diga Tchau Lilica");

					break;

Tchauzin!


Lilica? hUAHuhauahu
Poderia fazer o usuário digitar o nome, e gravar com o scanner…
ficaria mais bonito que o Lilica! kkkk

zeimbic

nossa galera valeu mesmo deu para abrir a mente legal… valeu… abraço

britotr

Naõ esqueça de editar o post com as tags [resolvido]…

abraços!

Criado 27 de abril de 2010
Ultima resposta 28 de abr. de 2010
Respostas 12
Participantes 6