Olá pessoal, sou novo em java, o que estou tentando fazer é o seguinte: uma tela com as opções de soma, subtração, divisão e multiplicação, onde o usuário escolhe uma dessas opções para realizar, porém não estou conseguindo usar um if para determinar qual operação fz de acordo com a escolha do usuário, erro está em usar if, fico desde já grato a todos pela ajuda, segue meu código.
mport java.util.Scanner;//
JFrameframe=newJFrame("Selecione a Opção");JRadioButtonSoma=newJRadioButton("Soma");JRadioButtonSubtração=newJRadioButton("Subtração");JRadioButtonDivisão=newJRadioButton("Divisão");JRadioButtonMultiplicação=newJRadioButton("Multiplicação");JPanelpanel=newJPanel();panel.add(Soma);panel.add(Subtração);panel.add(Divisão);panel.add(Multiplicação);Soma.addActionListener(newMyAction());Subtração.addActionListener(newMyAction());Divisão.addActionListener(newMyAction());Multiplicação.addActionListener(newMyAction());label=newJLabel("");frame.add(panel,BorderLayout.NORTH);frame.add(label,BorderLayout.CENTER);frame.setSize(400,400);frame.setVisible(true);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}publicclassMyActionimplementsActionListener{publicvoidactionPerformed(ActionEvente){Scannerscan=newScanner(System.in);if(soma.isSelected()){// O erro está em usar esse ifn1=JOptionPane.showInputDialog("Digite o primeiro numero inteiro");num1=Integer.parseInt(n1);n2=JOptionPane.showInputDialog("Digite o segundo numero numero inteiro");num2=Integer.parseInt(n2);soma=num1+num2;JOptionPane.showMessageDialog(null,"A Soma é:"+soma);
Nunca use diretamente um JFrame. Sempre derive uma classe dele, e então faça com que os componentes sejam variáveis de instância dessa classe. Por exemplo, você poderia ter estruturado seu programa como o exemplo que vou dar daqui a pouco.
Embora o Java permita, não faça a confusão de ter variáveis cujo nome difere apenas porque a primeira letra é minúscula ou maiúscula. Você confundiu “soma” com “Soma” e então acabou fazendo uma bela salada.
Vou dar um exemplo de como você poderia ter escrito essa classe. (Vou usar um truque, que é o de usar o Visual Editor do Eclipse. Mesmo assim, o código é suficientemente claro para você entender o que foi feito.)
E
entanglement
packageguj;importjava.awt.BorderLayout;importjava.awt.FlowLayout;importjava.awt.GridLayout;importjavax.swing.BoxLayout;importjavax.swing.ButtonGroup;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JOptionPane;importjavax.swing.JPanel;importjavax.swing.JRadioButton;importjavax.swing.JTextField;importjavax.swing.SwingUtilities;publicclassCalculadoraFrameextendsJFrame{privatestaticfinallongserialVersionUID=1L;privateJPaneljContentPane=null;privateJPanelpnlBotoes=null;privateJButtonbtnCalcular=null;privateJPanelpnlEntrada=null;privateJLabellblPrimeiroNumero=null;privateJTextFieldtxtPrimeiroNumero=null;privateJLabellblSegundoNumero=null;privateJTextFieldtxtSegundoNumero=null;privateJPanelpnlCheckBoxes=null;privateJRadioButtonrdoAdicao=null;privateJRadioButtonrdoSubtracao=null;privateJRadioButtonrdoMultiplicacao=null;privateJRadioButtonrdoDivisao=null;privateJLabellblResultado=null;privateButtonGroupbtgOperacoes=null;/** * This method initializes pnlBotoes * * @return javax.swing.JPanel */privateJPanelgetPnlBotoes(){if(pnlBotoes==null){lblResultado=newJLabel();lblResultado.setText("Resultado:");pnlBotoes=newJPanel();pnlBotoes.setLayout(newFlowLayout());pnlBotoes.add(getBtnCalcular(),null);pnlBotoes.add(lblResultado,null);}returnpnlBotoes;}/** * This method initializes btnCalcular * * @return javax.swing.JButton */privateJButtongetBtnCalcular(){if(btnCalcular==null){btnCalcular=newJButton();btnCalcular.setText("Calcular");btnCalcular.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEvente){try{intn1=Integer.parseInt(getTxtPrimeiroNumero().getText());intn2=Integer.parseInt(getTxtSegundoNumero().getText());intresultado=0;if(getRdoAdicao().isSelected()){resultado=n1+n2;}elseif(getRdoSubtracao().isSelected()){resultado=n1-n2;}elseif(getRdoMultiplicacao().isSelected()){resultado=n1*n2;}elseif(getRdoDivisao().isSelected()){resultado=n1/n2;}lblResultado.setText("Resultado: "+resultado);}catch(NumberFormatExceptionex){JOptionPane.showMessageDialog(CalculadoraFrame.this,ex.getMessage(),"Erro na conversão para int - formato inválido",JOptionPane.ERROR_MESSAGE);}catch(ArithmeticExceptionex){JOptionPane.showMessageDialog(CalculadoraFrame.this,ex.getMessage(),"Divisão por zero",JOptionPane.ERROR_MESSAGE);}}});}returnbtnCalcular;}/** * This method initializes pnlEntrada * * @return javax.swing.JPanel */privateJPanelgetPnlEntrada(){if(pnlEntrada==null){lblSegundoNumero=newJLabel();lblSegundoNumero.setText("Segundo número inteiro:");lblPrimeiroNumero=newJLabel();lblPrimeiroNumero.setText("Primeiro número inteiro:");GridLayoutgridLayout=newGridLayout();gridLayout.setRows(2);gridLayout.setColumns(2);pnlEntrada=newJPanel();pnlEntrada.setLayout(gridLayout);pnlEntrada.add(lblPrimeiroNumero,null);pnlEntrada.add(getTxtPrimeiroNumero(),null);pnlEntrada.add(lblSegundoNumero,null);pnlEntrada.add(getTxtSegundoNumero(),null);}returnpnlEntrada;}/** * This method initializes txtPrimeiroNumero * * @return javax.swing.JTextField */privateJTextFieldgetTxtPrimeiroNumero(){if(txtPrimeiroNumero==null){txtPrimeiroNumero=newJTextField();}returntxtPrimeiroNumero;}/** * This method initializes txtSegundoNumero * * @return javax.swing.JTextField */privateJTextFieldgetTxtSegundoNumero(){if(txtSegundoNumero==null){txtSegundoNumero=newJTextField();}returntxtSegundoNumero;}/** * This method initializes pnlCheckBoxes * * @return javax.swing.JPanel */privateJPanelgetPnlCheckBoxes(){if(pnlCheckBoxes==null){pnlCheckBoxes=newJPanel();pnlCheckBoxes.setLayout(newBoxLayout(getPnlCheckBoxes(),BoxLayout.Y_AXIS));pnlCheckBoxes.add(getRdoAdicao(),null);pnlCheckBoxes.add(getRdoSubtracao(),null);pnlCheckBoxes.add(getRdoMultiplicacao(),null);pnlCheckBoxes.add(getRdoDivisao(),null);btgOperacoes=newButtonGroup();btgOperacoes.add(getRdoAdicao());btgOperacoes.add(getRdoSubtracao());btgOperacoes.add(getRdoMultiplicacao());btgOperacoes.add(getRdoDivisao());}returnpnlCheckBoxes;}/** * This method initializes rdoAdicao * * @return javax.swing.JRadioButton */privateJRadioButtongetRdoAdicao(){if(rdoAdicao==null){rdoAdicao=newJRadioButton();rdoAdicao.setText("+ Adição");}returnrdoAdicao;}/** * This method initializes rdoSubtracao * * @return javax.swing.JRadioButton */privateJRadioButtongetRdoSubtracao(){if(rdoSubtracao==null){rdoSubtracao=newJRadioButton();rdoSubtracao.setText("- Subtração");}returnrdoSubtracao;}/** * This method initializes rdoMultiplicacao * * @return javax.swing.JRadioButton */privateJRadioButtongetRdoMultiplicacao(){if(rdoMultiplicacao==null){rdoMultiplicacao=newJRadioButton();rdoMultiplicacao.setText("X Multiplicação");}returnrdoMultiplicacao;}/** * This method initializes rdoDivisao * * @return javax.swing.JRadioButton */privateJRadioButtongetRdoDivisao(){if(rdoDivisao==null){rdoDivisao=newJRadioButton();rdoDivisao.setText("/ Divisão");}returnrdoDivisao;}/** * @param args */publicstaticvoidmain(String[]args){// TODO Auto-generated method stubSwingUtilities.invokeLater(newRunnable(){publicvoidrun(){CalculadoraFramethisClass=newCalculadoraFrame();thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);thisClass.setVisible(true);}});}/** * This is the default constructor */publicCalculadoraFrame(){super();initialize();}/** * This method initializes this * * @return void */privatevoidinitialize(){this.setSize(300,200);this.setContentPane(getJContentPane());this.setTitle("Calculadora");}/** * This method initializes jContentPane * * @return javax.swing.JPanel */privateJPanelgetJContentPane(){if(jContentPane==null){jContentPane=newJPanel();jContentPane.setLayout(newBorderLayout());jContentPane.add(getPnlEntrada(),BorderLayout.NORTH);jContentPane.add(getPnlCheckBoxes(),BorderLayout.CENTER);jContentPane.add(getPnlBotoes(),BorderLayout.SOUTH);}returnjContentPane;}}
E
entanglement
Note que para Radio Buttons funcionarem direito, é preciso SEMPRE associá-los a um ButtonGroup.