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
Pergunta
edimaxx
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 edimaxxLink para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
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.