Sto usando Eclipse per costruire una calcolatrice e sto avendo problemi perché ho bisogno di avere 2 valori inseriti dall'utente. Ecco il mio codice per la classe run.Come ottengo l'input dell'utente da un campo di testo e lo converto in doppio?
import display.Gui;
public class Main {
public static void main(String argsp[]) {
Gui window = new Gui();
double a = 0, b = 0, c = 0;
String operator;
boolean calculate = true;
window.setVisible(true);
window.setSize(500, 400);
window.setResizable(false);
window.setLocationRelativeTo(null);
while (calculate) {
window.textArea_1.append("Enter an equation.\n");
a = Double.parseDouble(window.textField.getText());
operator = window.textField.getText();
b = Double.parseDouble(window.textField.getText());
if (operator.contains("+"))
c = a + b;
if (operator.contains("-"))
c = a - b;
if (operator.contains("*"))
c = a * b;
if (operator.contains("/"))
c = a/b;
if (operator.contains("x^2"))
c = a * a;
if (operator.contains("sqrt"))
c = Math.sqrt(a);
if (operator.contains("%"))
c = a/100;
window.textArea.append("" + c + "\n");
window.textArea.append("");
window.textArea.append("Would you like to make another calculation? [Yes/No]\n");
String calculation = window.textField.getText();
try {
if (calculation.equalsIgnoreCase("Yes"))
calculate = true;
if (calculation.equalsIgnoreCase("No"))
calculate = false;
} catch (Exception e) {
window.textArea_1.append("Please enter yes or no");
}
}
}
}
e qui è la mia classe per il JFrame:
import java.awt.Dimension;
import java.awt.EventQueue;
import javax.swing.JFrame;
import java.awt.BorderLayout;
import javax.swing.JTextField;
import javax.swing.JTextArea;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class Gui extends JFrame {
public JTextArea textArea, textArea_1;
public JTextField textField;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Gui frame = new Gui();
frame.setVisible(false);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Gui() {
setBounds(100, 100, 450, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout(new BorderLayout(0, 0));
textField = new JTextField();
textField.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent Ev) {
textArea.append(textField.getText() + "\n");
textField.setText("");
}
});
textField.requestFocus();
getContentPane().add(textField, BorderLayout.SOUTH);
textField.setColumns(10);
textArea = new JTextArea();
textArea.setEditable(false);
textArea.setPreferredSize(new Dimension(215, 200));
getContentPane().add(textArea, BorderLayout.WEST);
textArea_1 = new JTextArea();
textArea_1.setEditable(false);
textArea_1.setPreferredSize(new Dimension(215, 200));
getContentPane().add(textArea_1, BorderLayout.EAST);
}
Ho provato ad utilizzare Double.parseDouble(window.textField.getText());
ma che non ha funzionato. Come posso farlo funzionare? Grazie in anticipo.
Cosa ha fatto? Ha generato un errore o non è stato compilato. Si prega di essere specifici su [cosa si è provato] (http://whathaveyoutried.com) –
Si chiama 'Double.parseDouble (...)' prima che l'utente abbia avuto la possibilità di inserire qualcosa nei campi di testo. Aggiungi un'istruzione print prima dell'istruzione 'parseDouble' per vedere il valore di' window.textField.getText() 'e vedrai che è vuoto. – assylias
E crea la tua GUI nell'EDT (come hai fatto nel secondo snippet di codice). – assylias