Calculadora - JOption

Pessoal, o programa a seguir pede para usarmos o pacote javax.swing.JOptionPane; e usarmos dois números para realizarmos as quatros operações principais - soma, subtração, divisão e multiplicação. Isso dentro de if’s.
Comecei o código com isso abaixo.
Alguém pode me ajudar como continuar?


import javax.swing.JOptionPane;

public class Cal{
	public static void main (String args []){
		String num1;
		String num2;

		num1 = JOptionPane.showInputDialog("Informe o segundo numero");
		num2 = JOptionPane.showInputDialog("Informe o primeiro numero ");
		
		if (num1 + num2)
			System.out.printf("%d soma %d\n", + (num1 + num2));
	}
}

Na verdade vc precisa verificar antes se o que o cara digitou sao realmente so numeros.

da uma olhada em patterns pra te ajudar.

esse teu if vai estourar uma excessão, voce precisa tratar isso antes.

Oi,

Primeiro modifique o tipo de suas variáveis para int, double ou qualquer tipo numérico.

Após isso, você irá notar um erro de compilação. Pois o retorno da classe JOptionPane e função showInput é diferente de int, double… etc…

Logo, necessita-se realizar a conversão:

int num1 = Interger.parseInt(JOptionPane.showInputDialog("Informe o segundo numero"));

Obs: Você utilizou duas variáveis String e utilizou o sinal de + para realizar a equação de soma. Porém como ambas variáveis foram definidas como String, o sinal de + significará concatenação. Ou seja, se a variável num1 for igual a 4 e num2 for igual a 2 o resultado ficará 42 e não 6 (se estivesse usando variáveis do tipo numeric).

Sei lá…

Tchauzin!

Fera faça assim…

Tenha 3 option pane. Um para o num1, outro para o num2 e outro para a operação (/*-+)

Atribua os numeros para int ou double e a operação atribua em string ou char.

Faça um switch case na operação, e em cada case retorne o valor da operação… =D

Oi,

Para não complicar, vou dar inicio:

[code]import javax.swing.JOptionPane;

public class Cal{
public static void main (String args []){
int num1;
int num2;
int soma;

	num1 = Integer.parseInt(JOptionPane.showInputDialog("Informe o segundo numero"));
	num2 = Integer.parseInt(JOptionPane.showInputDialog("Informe o primeiro numero "));
	
            soma = num1 + num2;

	System.out.println("A soma é: "+(soma));
}

}[/code]

Tchauzin!

int num1 = Interger.parseInt(JOptionPane.showInputDialog("Informe o segundo numero")); 

é uma boa idéia, mas pode gerar exceção, o ideal mesmo seria primeiro receber este cara como String mesmo e depois usar o pattern pra verificar se isso se trata apenas de digitos, ou arriscar dentro de um try catch transforma isso em numeros:

try {
            int num = Integer.parseInt(JOptionPane.showInputDialog("Digite um numero"));
            System.out.println(num);
        } catch (Exception e) {
            System.out.println("Insira apenas numeros: "+e.getMessage());
        }

O resto é tranquilo.

O tratamento de exceção tbm é valido, mas lembrem-se que o amigo quer uma calculadora!

Bom, é solicitado o uso do pacote javax.swing.JOptionPane, você deve entrar com dois números e usando if’s saber o tipo de operação a fazer. Certo?

Caso seja isso, você deve entrar tambem com o tipo de operação que deve ser feita criando uma nova caixa de dialogo. Por que? Pelo simples motivo de que o computador não consegue adivinhar o que vc esta planejando. Então entre com uma nova JOptionPane que faça isso.

String[] operacoes = {"Adição", "Subtração", "Multiplicação", "Divisão", "Nenhuma"}; int resposta = JOptionPane.showOptionDialog(this, // referencia para a posição da caixa de dialogo "Qual operação você deseja fazer?", // Pergunta "Operações", // Titulo JOptionPane.YES_NO_OPTION, // tipo da opção JOptionPane.PLAIN_MESSAGE, // tipo da mensagem null, // icone operacoes, // Possiveis escolhas "Nenhuma"); // Escolha que ja começa selecionada

Próximo passo é pegar os valores. no seu caso você já o fez. Contudo, você não pode fazer essas operações usando String elas devem ser de algum tipo de numero. Para simplificação de resposta, vou considerar todos como Integer.

Integer numero1 = Integer.parseInt(num1);
Integer numero2 = Integer.parseInt(num2);

Pronto, os numeros que você pegou agora são do tipo Inteiros. Nosso proximo passo seria criar if para cada operação. Suponho que você nao tenha aprendido o uso de else. Entao vamos simplificar. Cada escolha sua no JOptionPane.showOptionDialog(…) nos retorna um inteiro correspondente a sua escolha, começando em 0. No caso de você escolher “Adição” sera 0, “Subtração” sera 1 e assim por diante.
Portanto …

if(resposta == 0) { Integer total = numero1 + numero2; }

E para mostrar seu resultado em JOptionPane…

JOptionPane.showMessageDialog(this, 
                                               "O resultado é" + total, //Mensagem
                                               "Resultado", // titulo
                                                 JOptionPane.ALERT_MESSAGE); //icone

o que nao impede do individuo inserir uma letra B quando na verdade o software precisa de um numero

exceção tem que ser tratada em todos os casos, indiferente da simplicidade do programa, porque se a pessoa nao acostumar a prever erros desde o inicio, quando for trabalhar com projetos maiores, tera grandes problemas não esperados.

O cara esta aprendendo ainda. Relaxa, a matéria de exceções esta mais para frente.

Contudo, eu concordo com você ^^

Mas, não vamos complicar ainda mais.

[quote=higornucci]O cara esta aprendendo ainda. Relaxa, a matéria de exceções esta mais para frente.

Contudo, eu concordo com você ^^

Mas, não vamos complicar ainda mais.[/quote]

vc ta certo hehe, coloquei a carroça na frente dos burros, vamos deixar fluir…

O que o cara pediu é isso sendo que usando if, entendem?

Mas como eu posso colocar if ( num1 + num2)
e somar?

Bom, a ideia é essa abaixo. Só tá faltando substituir por if’s as operações, : ).

import javax.swing.JOptionPane;

public class Calculadora{

 public static void main(String args []) {

 	String primeiroNome, segundoNome; 

 	int n1; 
	int n2; 
	int soma;
	int sub;
	int mult;
	int div; 

	primeiroNome = JOptionPane.showInputDialog("Digite o primeiro numero");
	segundoNome = JOptionPane.showInputDialog("Digite o segundo numero");

	n1= Integer.parseInt(primeiroNome);
	n2= Integer.parseInt(segundoNome);



 	soma = n1 + n2;
	sub = n1 - n2;
	mult = n1 * n2;
	div = n1 / n2;


 	
 	
 	JOptionPane.showMessageDialog (null, "A soma eh: " + soma + "\nA subtracao eh: " 
 	+ sub + "\n A multiplicacao eh: " + mult + "\nA divisao eh: " + div);

System.exit(0); 

	}

}

Aguardo ajudas, vlw!