我正在研究Java中的编程挑战,我创建了一个带有3个框的GUI,用于输入A,B和C中的数字,然后我有一个操作顺序框,用户输入A,B,C ,以及他们选择的数学运算符。单击“计算”按钮时,数学运算的结果将显示在结果文本框中。
编辑以获得更好的解释:
这是我到目前为止所做的。
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
/*The string builder class allows the user to enter numbers into the UI
* The UI converts the Textbox input from strings to Floats and stores them in local variables
* A, B, and C
*/
public class StringBuildUI extends JFrame
{
//declare all variables, constants, and components for the GUI
private JPanel panel; // a panel to hold the gui components
private JLabel messageLabelA; // a label for the Text Field A
private JLabel messageLabelB; // a label for the Text Field B
private JLabel messageLabelC; // a label for the Text Field C
private JLabel messageLabelR; // a label for the Text Field results
private JLabel messageLabelO; // a label for the Text Field order of ops
private JTextField boxA; // a box to hold user input
private JTextField boxB; // a box to hold user input
private JTextField boxC; // a box to hold user input
private JTextField order; // a box to determine order of operations
private JTextField results; // a box to hold user input
private JButton calcButton; // a button to calculate strings
private JButton clearButton; // a button to clear all text fields
private JButton exitButton; // a button to exit the program
private final int WINDOW_WIDTH = 750; //window width
private final int WINDOW_HEIGHT = 350; //window height
/*
Constructor method for the GUI
*/
public StringBuildUI ()
{
//set title
setTitle("String Evaluator");
//set size of the window
setSize(WINDOW_WIDTH,WINDOW_HEIGHT);
//build the panel and add it to the frame and display the window
buildPanel();
add(panel);
setVisible(true);
}
/*
build panel adds label, text fields and all the buttons to the panel
*/
private void buildPanel()
{
//create the label for the text boxes, the boxes, and the buttons
messageLabelA = new JLabel("A");
messageLabelB = new JLabel("B");
messageLabelC = new JLabel("C");
messageLabelR = new JLabel("Results");
messageLabelO = new JLabel("Order of Operations");
boxA = new JTextField(10);
boxB = new JTextField(10);
boxC = new JTextField(10);
order = new JTextField(10);
results = new JTextField(10);
calcButton = new JButton("calculate");
clearButton = new JButton(" Clear Fields");
exitButton = new JButton("Exit");
//Group the buttons, and add them to the panel
add(calcButton);
add(clearButton);
add(exitButton);
//Create a panel and add components to it
panel = new JPanel();
panel.add(messageLabelA);
panel.add(boxA);
panel.add(messageLabelB);
panel.add(boxB);
panel.add(messageLabelC);
panel.add(boxC);
panel.add(messageLabelO);
panel.add(order);
panel.add(messageLabelR);
panel.add(calcButton);
panel.add(clearButton);
panel.add(exitButton);
}
/*
Private inner class for event handling when the user clicks buttons
*/
private class ButtonListener implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e)
{
String inputA; // holds user input from text box a
String inputB; // holds user input from text box b
String inputC; // holds user input from text box c
Float results; // holds results of calculations
Float A,B,C; // holds converted strings for calculations
//get string input
inputA = boxA.getText();
inputB = boxB.getText();
inputC = boxC.getText();
//Convert strings to integers
A = Float.parseFloat(inputA);
B = Float.parseFloat(inputB);
C = Float.parseFloat(inputC);
//get input from order of operations box
Float inputABC;
inputABC = order.getFloat();
}
我转换到早期吗? 我想拿A B和C并在我的事件处理中使用它们来计算按钮,这样结果将基于用户输入。在我的脑海中,我认为我可以将数学运算基于用户输入的唯一方法是变量A B和C是字符串,但我不确定。
如何从框中传递文本输入并在事件处理中使用它们?
感谢。
编辑回答问题:数学运算是用户定义的,所以我不能将它们放入我的计算按钮的事件处理程序中。我还没有开始编写计算按钮的代码,因为我不确定如何处理用户输入。
答案 0 :(得分:2)
您可以在合适的时间获取数据并进行转换,但我不会看到您使用数字进行任何计算或设置结果字段文本。 ActionListener的actionPerformed最后需要results.setText(...)
方法调用。
除此之外,您还需要学习并遵守Java命名标准,包括给出以小写字母开头的变量名称。您还需要使用“自我评论”的名称,并使您的代码更容易理解。
除此之外,你应该几乎不要使用浮动,因为这样做可以获得很高的精度和成本。
答案 1 :(得分:0)
您可以使用getText()。trim()来删除ABC顺序中的任何空格。
此外,您还可以将结果框设置为setEditable(false)。
现在关于这个问题,您可以使用String的toCharArray()方法来比较在Order Box中输入的每个3个字符。这是该方法的简短实现:
String s1 = "ABC";
char[] a = s1.toCharArray();
if(a[0]=='A' && a[1]=='B')
System.out.println("ABC");