Ir para conteúdo
Fórum Script Brasil
  • 0

problema com calculadora em GUI


edimaxx

Pergunta

ola pessoal estou desenvolvendo esta calculadora e estou me batendo nas operações de bases diferentes, alguém se habilita em me ajudar??

eu estou ainda só na base decimal e binaria (acho que pro resto a teoria é a mesma) olha o código ai .Se quiserem me add no MSN: edimaxx2005@hotmail.com

metodo principal

//Home Pagehttp://guigenie.cjb.net - Check often for new versions!

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.event.*;

@SuppressWarnings({ "unused", "serial" })

public class Calculadora extends JPanel implements ActionListener {

private JButton n1;

private JButton n2;

private JButton n3;

private JButton n4;

private JButton n5;

private JButton n6;

private JButton n7;

private JButton n8;

private JButton n9;

private JButton n0;

private JButton na;

private JButton nb;

private JButton nc;

private JButton nd;

private JButton ne;

private JButton nf;

private JButton igual;

private JButton soma;

private JButton sub;

private JButton div;

private JButton virg;

private JButton mult;

private JTextField teste;

private JTextField tela;

private JRadioButton dec;

private JRadioButton bin;

private JRadioButton oct;

private JRadioButton hex;

private JButton limpa;

private ButtonGroup grupoRadio = new ButtonGroup();

public Calculadora() {

//construct components

n1 = new JButton ("1");

n2 = new JButton ("2");

n3 = new JButton ("3");

n4 = new JButton ("4");

n5 = new JButton ("5");

n6 = new JButton ("6");

n7 = new JButton ("7");

n8 = new JButton ("8");

n9 = new JButton ("9");

n0 = new JButton ("0");

na = new JButton ("A");

nb = new JButton ("B");

nc = new JButton ("C");

nd = new JButton ("D");

ne = new JButton ("E");

nf = new JButton ("F");

igual = new JButton ("=");

soma = new JButton ("+");

sub = new JButton ("--");

div = new JButton ("/");

virg = new JButton (",");

mult = new JButton ("*");

teste = new JTextField (5);

tela = new JTextField (5);

dec = new JRadioButton ("decimal");

bin = new JRadioButton ("binario");

oct = new JRadioButton ("octal");

hex = new JRadioButton ("hexa");

limpa = new JButton ("C");

// dec.setSelected(true);

//adjust size and set layout

setPreferredSize (new Dimension (335, 374));

setLayout (null);

//add components

add (n1);

add (n2);

add (n3);

add (n4);

add (n5);

add (n6);

add (n7);

add (n8);

add (n9);

add (n0);

add (na);

add (nb);

add (nc);

add (nd);

add (ne);

add (nf);

add (igual);

add (soma);

add (sub);

add (div);

add (virg);

add (mult);

add (teste);

add (tela);

add (dec);

add (bin);

add (oct);

add (hex);

add (limpa);

//set component bounds (only needed by Absolute Positioning)

n1. setBounds (20, 260, 55, 50);

n2. setBounds (80, 260, 55, 50);

n3. setBounds (140, 260, 55, 50);

n4. setBounds (200, 260, 55, 50);

n5. setBounds (20, 205, 55, 50);

n6. setBounds (80, 205, 55, 50);

n7. setBounds (140, 205, 55, 50);

n8. setBounds (200, 205, 55, 50);

n9. setBounds (20, 150, 55, 50);

n0. setBounds (20, 315, 115, 50);

na. setBounds (80, 150, 55, 50);

nb. setBounds (140, 150, 55, 50);

nc. setBounds (200, 150, 55, 50);

nd. setBounds (20, 95, 55, 50);

ne. setBounds (80, 95, 55, 50);

nf. setBounds (140, 95, 55, 50);

igual. setBounds (260, 260, 55, 104);

soma. setBounds (260, 150, 55, 50);

sub. setBounds (260, 205, 55, 50);

div. setBounds (200, 95, 55, 50);

virg. setBounds (140, 315, 55, 50);

mult. setBounds (260, 95, 55, 50);

teste. setBounds (40, 5, 245, 25);

tela. setBounds (20, 30, 291, 30);

dec. setBounds (95, 65, 70, 25);

bin. setBounds (30, 65, 70, 25);

oct. setBounds (175, 65, 56, 25);

hex. setBounds (245, 65, 70, 25);

limpa. setBounds (200, 315, 55, 50);

grupoRadio.add(dec);

grupoRadio.add(bin);

grupoRadio.add(oct);

grupoRadio.add(hex);

n1. addActionListener(this);

n2. addActionListener(this);

n3. addActionListener(this);

n4. addActionListener(this);

n5. addActionListener(this);

n6. addActionListener(this);

n7. addActionListener(this);

n8. addActionListener(this);

n9. addActionListener(this);

n0. addActionListener(this);

na. addActionListener(this);

nb. addActionListener(this);

nc. addActionListener(this);

nd. addActionListener(this);

ne. addActionListener(this);

nf. addActionListener(this);

igual. addActionListener(this);

soma. addActionListener(this);

sub. addActionListener(this);

div. addActionListener(this);

virg. addActionListener(this);

mult. addActionListener(this);

teste. addActionListener(this);

tela. addActionListener(this);

dec. addActionListener(this);

bin. addActionListener(this);

oct. addActionListener(this);

hex. addActionListener(this);

limpa. addActionListener(this);

n0.setEnabled(false);

n1.setEnabled(false);

n2.setEnabled(false);

n3.setEnabled(false);

n4.setEnabled(false);

n5.setEnabled(false);

n6.setEnabled(false);

n7.setEnabled(false);

n8.setEnabled(false);

n9.setEnabled(false);

na.setEnabled(false);

nb.setEnabled(false);

nc.setEnabled(false);

nd.setEnabled(false);

ne.setEnabled(false);

nf.setEnabled(false);

}

static double variavel1 = 0,

variavel2 = 0,

resultado = 0,

tmp = 0;

static String retorna = null;

static int op = 0,

base = 0,

baseAnt = 0;

public static void main (String[] args) {

JFrame frame = new JFrame ("Trabalho Algoritimo BSI 2SA");

frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

frame.getContentPane().add (new Calculadora());

frame.pack();

frame.setVisible (true);

}

@Override

public void actionPerformed(ActionEvent arg0) {

Object obj = arg0.getSource();

// controle para liberar ou não o teclado em relação a base selecionada.

// decimal

if ( obj == dec ){

n0.setEnabled(true);

n1.setEnabled(true);

n2.setEnabled(true);

n3.setEnabled(true);

n4.setEnabled(true);

n5.setEnabled(true);

n6.setEnabled(true);

n7.setEnabled(true);

n8.setEnabled(true);

n9.setEnabled(true);

na.setEnabled(false);

nb.setEnabled(false);

nc.setEnabled(false);

nd.setEnabled(false);

ne.setEnabled(false);

nf.setEnabled(false);

base = 1;

}

// binario

else if( obj == bin ){

n0.setEnabled(true);

n1.setEnabled(true);

n2.setEnabled(false);

n3.setEnabled(false);

n4.setEnabled(false);

n5.setEnabled(false);

n6.setEnabled(false);

n7.setEnabled(false);

n8.setEnabled(false);

n9.setEnabled(false);

na.setEnabled(false);

nb.setEnabled(false);

nc.setEnabled(false);

nd.setEnabled(false);

ne.setEnabled(false);

nf.setEnabled(false);

virg.setEnabled(false);

base = 2;

}

// octal

else if( obj == oct ){

n0.setEnabled(true);

n1.setEnabled(true);

n2.setEnabled(true);

n3.setEnabled(true);

n4.setEnabled(true);

n5.setEnabled(true);

n6.setEnabled(true);

n7.setEnabled(true);

n8.setEnabled(false);

n9.setEnabled(false);

na.setEnabled(false);

nb.setEnabled(false);

nc.setEnabled(false);

nd.setEnabled(false);

ne.setEnabled(false);

nf.setEnabled(false);

base = 3;

}

// hexa

else if( obj == hex ){

n0.setEnabled(true);

n1.setEnabled(true);

n2.setEnabled(true);

n3.setEnabled(true);

n4.setEnabled(true);

n5.setEnabled(true);

n6.setEnabled(true);

n7.setEnabled(true);

n8.setEnabled(true);

n9.setEnabled(true);

na.setEnabled(true);

nb.setEnabled(true);

nc.setEnabled(true);

nd.setEnabled(true);

ne.setEnabled(true);

nf.setEnabled(true);

base = 4;

}

// fim do controle para liberar ou não o teclado em relação a base selecionada.

if ( base == 1 ){

if ( baseAnt != 0 ){

//resultado = Double.parseDouble(tela.getText());

retorna = (tela.getText());

tmp = (operações.converteParaDecimal(retorna, baseAnt));

tela.setText(String.valueOf(retorna));

}

teste.setText(String.valueOf(base));

teste.setText(String.valueOf(retorna));

if ( obj == n0){

tela.setText(tela.getText() + 0);

}

if ( obj == n1){

tela.setText(tela.getText() + 1);

}

if ( obj == n2){

tela.setText(tela.getText() + 2);

}

if ( obj == n3){

tela.setText(tela.getText() + 3);

}

if ( obj == n4){

tela.setText(tela.getText() + 4);

}

if ( obj == n5){

tela.setText(tela.getText() + 5);

}

if ( obj == n6){

tela.setText(tela.getText() + 6);

}

if ( obj == n7){

tela.setText(tela.getText() + 7);

}

if ( obj == n8){

tela.setText(tela.getText() + 8);

}

if ( obj == n9){

tela.setText(tela.getText() + 9);

}

if ( obj == virg){

tela.setText(tela.getText() + ".");

virg.setEnabled(false);

}

if ( ( obj == div) || ( obj == mult) || ( obj == sub) || ( obj == soma) ){

if ( obj == soma){

op = 1;

}

if ( obj == sub){

op = 2;

}

if ( obj == mult){

op = 3;

}

if ( obj == div){

op = 4;

}

variavel1 = Double.parseDouble(tela.getText());

tela.setText(null);

}

if ( obj == igual ){

variavel2 = Double.parseDouble(tela.getText());

tela.setText(null);

resultado = operações.operação(op, variavel1, variavel2);

tela.setText(String.valueOf(resultado));

}

if ( obj == limpa ){

tela.setText(null);

variavel1 = 0;

variavel2 = 0;

resultado = 0;

}

}else

if( base == 2 ){

resultado = Double.parseDouble(tela.getText());

retorna = (operações.converte(resultado, base));

tela.setText(retorna);

teste.setText(String.valueOf(base));

teste.setText(String.valueOf(retorna));

if ( obj == n0){

tela.setText(tela.getText() + 0);

}

if ( obj == n1){

tela.setText(tela.getText() + 1);

}

if ( ( obj == div) || ( obj == mult) || ( obj == sub) || ( obj == soma) ){

if ( obj == soma){

op = 1;

}

if ( obj == sub){

op = 2;

}

if ( obj == mult){

op = 3;

}

if ( obj == div){

op = 4;

}

retorna = (tela.getText());

variavel1 = (double)operações.converteParaDecimal(retorna, 1);

tela.setText(null);

}

retorna = null;

if ( obj == igual ){

retorna = (tela.getText());

variavel2 = (double)operações.converteParaDecimal(retorna, 1);

tela.setText(null);

resultado = operações.operação(op, variavel1, variavel2);

retorna = (operações.converte(resultado, base));

tela.setText(String.valueOf(retorna));

}

retorna = null ;

if ( obj == limpa ){

tela.setText(null);

variavel1 = 0;

variavel2 = 0;

resultado = 0;

}

baseAnt = 1;

}else

if ( base == 3 ){

resultado = Double.parseDouble(tela.getText());

retorna = (operações.converte(resultado, base));

tela.setText(String.valueOf(retorna));

teste.setText(String.valueOf(base));

teste.setText(String.valueOf(retorna));

baseAnt = 2;

}else

if ( base == 4 ){

resultado = Double.parseDouble(tela.getText());

retorna = (operações.converte(resultado, base));

tela.setText(String.valueOf(retorna));

teste.setText(String.valueOf(base));

teste.setText(String.valueOf(retorna));

baseAnt = 3;

}

}

}

método das operações e conversões

  

public class operações {

public static double operação( int op , double variavel1 , double variavel2 ){

double result = 0;

switch(op){

case 1:

result = variavel1 + variavel2;

break;

case 2:

result = variavel1 - variavel2;

break;

case 3:

result = variavel1 * variavel2;

break;

case 4:

result = variavel1 / variavel2;

break;

}

return result;

}

public static String converte( double num , int base ){

int valor = (int)num;

String result = "";

switch (base){

case 2 :

result =Integer.toString(valor,2);

break;

case 3 :

result = Integer.toOctalString(valor);

break;

case 4 :

result = Integer.toHexString(valor);

break;

}

return result;

}

public static int converteParaDecimal( String num , int base ){

int result = 0;

switch (base){

case 1 :

result =Integer.parseInt(num, 2);

break;

case 2 :

result = Integer.parseInt(num, 8);

break;

case 3 :

result = Integer.parseInt(num, 16);

break;

}

return result;

}

}

Editado por edimaxx
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...