Java 如何从计算器文本区域获取数字(无运算符)?
在我之前的问题中,我没有得到有用的答案,我希望我能得到一些东西:) 这是我的密码:Java 如何从计算器文本区域获取数字(无运算符)?,java,variables,operators,calculator,Java,Variables,Operators,Calculator,在我之前的问题中,我没有得到有用的答案,我希望我能得到一些东西:) 这是我的密码: import java.util.*; import javax.swing.*; import java.awt.*; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; class Calculator extends JFrame { public Calculator() { JFrame jf =
import java.util.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
class Calculator extends JFrame
{
public Calculator()
{
JFrame jf = new JFrame("Calculator");
jf.setLocation(500,200);
jf.setSize(600,400);
jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
/*=======================Add panel==============================
================================================================*/
JPanel jp = new JPanel();
jp.setLayout(null);
jp.setBackground(Color.cyan);
jf.add(jp);
/*========================Add Textarea========================
================================================================*/
JTextArea jta = new JTextArea("");
jta.setBounds(100,25,290,50);
jp.add(jta);
/*========================Creating Font========================
===============================================================*/
Font labels = new Font("Lucida Console",Font.PLAIN, 20);
Font nums = new Font("Lucida Console",Font.PLAIN, 9);
/*========================Add Labels============================
================================================================*/
/* for H align: ,SwingConstants.CENTER */
JLabel jlbl = new JLabel("=");
jlbl.setFont(labels); // MAKING FONT BIGGER
jlbl.setBounds(400,30,50,40);
jp.add(jlbl);
JLabel jlbl_result = new JLabel();
String temp = jta.getText();
jlbl_result.setText(temp);
/*=========================Adding button============================
====================================================================*/
JButton jbtn1 = new JButton("1");
jbtn1.setBounds(120,100,50,40);
jbtn1.setBackground(Color.green);
jp.add(jbtn1);
JButton jbtn2 = new JButton("2");
jbtn2.setBounds(180,100,50,40);
jbtn2.setBackground(Color.green);
jp.add(jbtn2);
JButton jbtn3 = new JButton("3");
jbtn3.setBounds(240,100,50,40);
jbtn3.setBackground(Color.green);
jp.add(jbtn3);
JButton jbtn4 = new JButton("4");
jbtn4.setBounds(120,155,50,40);
jbtn4.setBackground(Color.green);
jp.add(jbtn4);
JButton jbtn5 = new JButton("5");
jbtn5.setBounds(180,155,50,40);
jbtn5.setBackground(Color.green);
jp.add(jbtn5);
JButton jbtn6 = new JButton("6");
jbtn6.setBounds(240,155,50,40);
jbtn6.setBackground(Color.green);
jp.add(jbtn6);
JButton jbtn7 = new JButton("7");
jbtn7.setBounds(120,210,50,40);
jbtn7.setBackground(Color.green);
jp.add(jbtn7);
JButton jbtn8 = new JButton("8");
jbtn8.setBounds(180,210,50,40);
jbtn8.setBackground(Color.green);
jp.add(jbtn8);
JButton jbtn9 = new JButton("9");
jbtn9.setBounds(240,210,50,40);
jbtn9.setBackground(Color.green);
jp.add(jbtn9);
JButton jbtn0 = new JButton("0");
jbtn0.setBounds(180,265,50,40);
jbtn0.setBackground(Color.green);
jp.add(jbtn0);
JButton jbtn_sum = new JButton("+");
jbtn_sum.setBounds(380,100,40,40);
jbtn_sum.setFont(nums);
jbtn_sum.setBackground(Color.gray);
jp.add(jbtn_sum);
JButton jbtn_sub = new JButton("-");
jbtn_sub.setBounds(380,100,40,40);
jbtn_sub.setFont(nums);
jbtn_sub.setBackground(Color.gray);
jp.add(jbtn_sub);
JButton jbtn_equal = new JButton("-");
jbtn_equal.setBounds(380,155,40,40);
jbtn_equal.setFont(nums);
jp.add(jbtn_equal);
jf.setVisible(true);
jbtn1.addActionListener(e->jta.append("1"));
jbtn2.addActionListener(e->jta.append("2"));
jbtn3.addActionListener(e->jta.append("3"));
jbtn4.addActionListener(e->jta.append("4"));
jbtn5.addActionListener(e->jta.append("5"));
jbtn6.addActionListener(e->jta.append("6"));
jbtn7.addActionListener(e->jta.append("7"));
jbtn8.addActionListener(e->jta.append("8"));
jbtn9.addActionListener(e->jta.append("9"));
jbtn0.addActionListener(e->jta.append("0"));
jbtn_equal.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt2)
{
}
});
//jbtn_sub.addActionListener(e->jta.append("-"));
jbtn_sum.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
}
});
}
public static void main(String...ser)
{
new Calculator();
}
}
我知道!有很多代码,我想把我输入到JTextArea的数字放在变量中,如何获取数字(只是没有运算符的数字)
并将其分配给变量
而且。。。这需要多少个变量?(如果我有5个以上的变量)
还有很多问题…,我不能写在这里
感谢您的帮助(请原谅我语法不好)您可以从JTextArea下载文本并将其保存到新字符串中。如果只下载数字,只需使用
parseInt()
函数将字符串转换为int。
如果使用运算符(例如2+2)输入操作,则可以使用模式捕获数字,可以使用split()
函数以符号分隔字符串中的2个数字,可能性很大;)
如果您没有想到这一点,请撰写问题,我将尽力提供帮助。从JTextArea获取文本,然后将其按非数字字符拆分为字符串数组,如下所示:
String[] numbers = jta.getText().split("\\D+");
例如,如果使用此正则表达式拆分字符串“1+23-5”,则会得到以下数组:{“1”、“23”、“5”}
如果要将数字存储为int,请使用for each循环将字符串数组复制到int数组中:
int[] ints = new int[numbers.length]
for( int i = 0; i < numbers.length; i++){
ints[i] = Integer.parseInt(numbers[i]);
}
int[]ints=new int[numbers.length]
for(int i=0;i
然后,不要将每个数字放在一个单独的变量中,只要将它们保存在数组中,并在需要时通过索引访问它们。“还有很多问题……我不能在这里写下”:如果你想回答这些问题,你需要将它们写下来。谢谢!成功了!!但我还是要想一想如何处理这些数字是的,它会起作用的。ReGEX在任何不是数字的字符上拆分字符串。@ MHAMADARSALAN,如果这个答案对你有帮助,请考虑选择它作为被接受的答案。对不起,我已经跳过这个项目一段时间了,谢谢,但是我注意到了一些东西。首先它不是(for each)循环,我想它是一个常规(for)循环,第二件事是你的正则表达式忽略数字!它不需要数字,也不需要场景,我用它帮了我一点忙,顺便说一句,谢谢你的回答,不客气。你的问题最终得到回答了吗?如果没有,那么你可能应该问一个新问题。我真的不明白你所说的忽略数字或循环是什么意思。但我希望你能弄明白。我想我明白了!但如何从输入的公式中删除运算符?如果你能告诉我,如何设置数学规则?例如->(“*”是“+”或“-”之前的功)?谢谢