Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从计算器文本区域获取数字(无运算符)?_Java_Variables_Operators_Calculator - Fatal编程技术网

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)循环,第二件事是你的正则表达式忽略数字!它不需要数字,也不需要场景,我用它帮了我一点忙,顺便说一句,谢谢你的回答,不客气。你的问题最终得到回答了吗?如果没有,那么你可能应该问一个新问题。我真的不明白你所说的忽略数字或循环是什么意思。但我希望你能弄明白。我想我明白了!但如何从输入的公式中删除运算符?如果你能告诉我,如何设置数学规则?例如->(“*”是“+”或“-”之前的功)?谢谢