Hola,
Cita:
Iniciado por Xerelo ... Pues que tu método sería completamente ineficiente, por ponerte un ejemplo, para hexadecimal (que también se puede hacer con el método que he puesto) necesitarías 16 if. ...
Exactamente, y agregando algo más, la programación en Java es muy diferente a otros lenguajes, está orientada a objetos, por lo que los métodos son mucho más eficientes que la programación procedural y secuencial. Por ejemplo, el mismo programa pero usando las herramientas que te provee Java,
Código Java:
Ver originalimport java.awt.Component;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JTextField;
private static final long serialVersionUID = 1L;
private String text
= "Presione en los botones binarios.";
@Override
public void init() {
for (int i = 0; i < 16; i++) {
button.addActionListener(this);
panel.add(button);
}
getContentPane().removeAll();
getContentPane
().
add(field, java.
awt.
BorderLayout.
PAGE_END); }
@Override
if (e.
getSource() instanceof JButton) { f.setText(f.getText().equals("0") ? "1" : "0");
calc();
}
}
private void calc() {
StringBuilder builder = new StringBuilder();
for (Component component
: panel.
getComponents()) builder.
append(((JButton)component
).
getText());
field.
setText(String.
format("%s. El valor binario %s en decimal es %d.",
text, builder.toString(), bin));
}
}
Aunque contraviniendo las instrucciones de Xerelo, pero creo que ElMeoS necesita mas ejemplos en Java puro, puro Java, que según lo que observo tiene ya experiencia en C y similares.
Si observas bien no necesité 16 variables diferentes para los botones, simplemente están contenidos en una Collection de Component, los cuales puedo accesar por medio del panel.getComponents(). Así también no necesito accesar 16 variables en el ActionListener puesto que comparten el mismo código, la única diferencia es que estoy usando 'Objetos' diferentes que me entrega el getSource().
Saludos,
ps:
Olvidaba lo mas importante, para que funcione con 24 digitos solamente tienes que cambiar esta línea, lo cual hace que el código sea muy versátil, extensible y escalable. (No lo probé con más digitos).