2017-12-04 5 views
-1

in meiner vorherigen Frage, ich habe keine brauchbare Antwort, ich hoffe, dass ich etwas bekommen :)Wie bekomme ich Zahlen aus dem Taschenrechner-Textbereich (ohne Operatoren)?

hier mein Code ist:

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(); 
} 
} 

ich weiß! Es gibt eine Menge Code, ich möchte die Nummer eingeben, die ich in JTextArea innerhalb der Variablen eingegeben habe, wie bekomme ich Zahlen (nur Zahlen ohne Operatoren) und es der Variablen zuweisen?

und ... wie viele Variable erforderlich ist, es zu tun? (Im Fall, wenn ich mehr als 5 Variable)

und viele Fragen ..., kippe ich es hier aufschreiben

danke für Hilfe (verzeih mir meine schlechte Grammatik)

+0

"und eine Menge Fragen ..., ich kann es hier nicht aufschreiben": Wenn Sie möchten, dass diese Fragen beantwortet werden, müssen Sie sie aufschreiben. – Keara

Antwort

0

Sie laden den Text von JTextArea und speichern sie in der neuen Zeichenfolge. Wenn Sie nur Zahlen herunterladen, verwenden Sie einfach die Funktion parseInt(), um String in int zu konvertieren. Wenn Sie eine Aktion mit Operatoren zB 2 + 2 eingeben, dann können Sie Muster verwenden, um Zahlen zu erfassen, können Sie die split() Funktion verwenden, um 2 Zahlen in der Zeichenfolge mit einem Zeichen zu trennen, die Möglichkeiten sind viele;)

Wenn dies ist nicht, was Sie im Sinn hatten, komponieren Sie die Frage und ich werde versuchen zu helfen.

+0

Ich denke, ich habe es! Aber wie man Operatoren aus der eingegebenen Formel entfernt? und wenn Sie mir sagen können, wie man die Mathematikregeln einstellt? für .e.g -> ('*' ist Arbeit vor '+' oder '-')? Vielen Dank! –

0

den Text aus dem JTextArea holen und spaltete es dann durch Nicht-Zahlen-Zeichen in ein Array von Strings, wie folgt aus:

String[] numbers = jta.getText().split("\\D+"); 

Zum Beispiel, wenn Sie diese Regex verwendet, um die Zeichenfolge „aufzuspalten 1+ 23-5 "würden Sie dieses Array bekommen: {" 1 "," 23 "," 5 "}.

Wenn Sie die Zahlen als Ints speichern möchten, verwenden Sie eine for-each-Schleife den String-Array in ein int-Array zu kopieren:

int[] ints = new int[numbers.length] 
for(int i = 0; i < numbers.length; i++){ 
    ints[i] = Integer.parseInt(numbers[i]); 
} 

Dann anstatt jede Zahl in einer separaten Variable setzen, nur Bewahren Sie sie im Array auf und greifen Sie bei Bedarf auf den Index zu.

+0

danke! es funktionierte!! Ich muss noch überlegen, wie ich mit den Zahlen arbeiten soll, bitte eine andere Frage! Funktioniert dieser Code, wenn ich andere Operatoren habe? (-, /, *, ...) –

+0

Ja, es wird funktionieren. Die Regex teilt die Zeichenfolge für ein beliebiges Zeichen auf, das keine Zahl ist. – Keara

Verwandte Themen