Como puedo crear una calculadora de matrices en una ventana
Nuevamente yo, he terminado satisfactoriamente mi anterior proyecto gracias a algunos consejos que me proporcionaron, ahora tengo un problema mas grande. Tengo que iniciar un nuevo proyecto pero esta vez es de matrices, tengo la idea clara de como se hace una matriz en java pero referente a lo que es sumar, restar, multiplicar, etc., solo se hacerlo en papel. Lo que se me solicita es primero solicitar al usuario el tamaño ambas matrices y después que seleccione la operación (o en el caso viceversa, primero operación luego el ingreso del tamaño), ya después serian los valores.
Dejando un poco de lado la ventana que yo pienso es mas sencilla de hacer mi conflicto empieza con el simple hecho de que no se como hacer que se identifique el tamaño, se guarden la o las matrices, luego se guarde cada valor del usuario y al final se haga la operación correspondiente (aquí también sale cómo debo imprimirlo....).
Por favor alguien que me ayude a entender y me guié en como debo iniciar, desarrollar y finalizar este proyecto!
De antemano, gracias por tomarse el tiempo de leer.
- Inicie sesión o regístrese para enviar comentarios
Re: matrices
He aquí algunas sugerencias:
Utiliza un
JComboBox
para seleccionar el tipo de operación (Suma, Resta, etc).De acuerdo al tipo de operación, muestra u oculta una serie de
JSpinner
's, para determinar las dimensiones de cada matriz.Para introducir cada matriz, tienes varias opciones. Por ejemplo, un arreglo bidimensional de
JTextField
's o unJTable
.Para mostrar el resultado, puedes utilizar nuevamente un arreglo de
JTextField
's o unJTable
.¡Por si sirve de algo!
Calculadora ..
Soy neofito en esto de la programada en Java ... y realicé el ejercicio para aprender más ... treté de utilizar las nuevas cosas del API del JDK 1.8 ... bienvenida cualquier crítica constructiva ...
import java.awt.GridLayout;
import java.util.stream.Stream;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
/**
*
* @author Gernardo Suarez Trejo
*/
public class Calculadora extends JFrame {
private final JTextArea display = new JTextArea(2, 17);
private JButton[] btnArray;
private void init() {
display.setEditable(false);
final double[] operands = {0.0, 0.0};
final String[] operator = {""};
final Stream<String> labels = Stream.of("7", "8", "9", "*", "4", "5", "6", "/",
"1", "2", "3", "+", "0", ".", "C", "-", "=");
btnArray = labels.map(JButton::new)
.map((JButton btn) -> {
btn.addActionListener(evt -> {
String text = btn.getText();
if ("C".equals(text)) {
operands[0] = operands[1] = 0;
display.setText("");
} else if (("*".equals(text) || "/".equals(text) || "+".equals(text)
|| "-".equals(text)) && !"".equals(display.getText())) {
operands[0] = Double.parseDouble(display.getText().trim());
operator[0] = text;
display.setText("");
} else if ("=".equals(text)) {
operands[1] = Double.parseDouble(display.getText().trim());
double result = 0;
if ("*".equals(operator[0])) result = operands[0] * operands[1];
if ("/".equals(operator[0])) result = operands[0] / operands[1];
if ("+".equals(operator[0])) result = operands[0] + operands[1];
if ("-".equals(operator[0])) result = operands[0] - operands[1];
display.setText(String.format("%s", result));
operator[0] = "";
} else display.append(text);
});
return btn;
}).toArray(JButton[]::new);
}
public Calculadora() {
setTitle("Calculadora");
init();
JPanel btnPane = new JPanel(new GridLayout(5, 4));
for (JButton btn : btnArray) btnPane.add(btn);
setLayout(new BorderLayout(3, 3));
add(display, BorderLayout.NORTH);
add(btnPane, BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
pack();
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new Calculadora());
}
}