Из jTextField пример присвоить переменной - Java

Узнай цену своей работы

Формулировка задачи:

Добрый день. Предположим у нас есть переменная, в которой производим вычисления:
double rez = 0; rez = 5+3-8/2^2;
Ответ выводим в jLabel9 jLabel9.setText(jLabel9.getText()+rez+""); // Ответ: 6
На форме имеется текстовое поле (jTextField1), куда вводим пример (типа 5+3-8/2^2). Как нам извлечь из этого поля пример (для его вычисления) и результат записать в jLabel1?
Срочно надо. Спасибо заранее.

Решение задачи: «Из jTextField пример присвоить переменной»

textual
Листинг программы
  1. package org.***;
  2.  
  3. import javax.swing.*;
  4. import java.awt.*;
  5. import java.awt.event.ActionEvent;
  6. import java.awt.event.ActionListener;
  7. import java.util.ArrayList;
  8.  
  9. /**
  10.  * Created by ****.
  11.  */
  12. public class MainFrame extends JFrame {
  13.     JLabel label;
  14.     JTextArea textArea;
  15.     JButton button;
  16.     public MainFrame()  {
  17.         super ("Экран");
  18.         setBounds(500,500,300,300);
  19.         setVisible(true);
  20.         setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  21.         setLayout(new BorderLayout());
  22.         label = new JLabel("Введите формулу");
  23.         textArea = new JTextArea();
  24.         button = new JButton("BUTTON");
  25.         add(label, BorderLayout.NORTH);
  26.         add(textArea, BorderLayout.CENTER);
  27.         add(button, BorderLayout.SOUTH);
  28.  
  29.         button.addActionListener(new ActionListener() {
  30.             @Override
  31.             public void actionPerformed(ActionEvent e) {
  32.                 //тут храним строку, взятую из JTextArea
  33.                 String s = textArea.getText();
  34.                 //здесь храним "отпарсенную" строку поэлементно
  35.                 java.util.List equation = new ArrayList<>();
  36.                 //строковая переменная состояния
  37.                 String state = "START";
  38.                 //временная переменная для записи чисел
  39.                 double current = 42;
  40.                 //начинаем парсить строку
  41.                 for (int i = 0; i < s.length(); i++){
  42.                     switch (state){
  43.                         case "START":
  44.                             //если текущий элемент строки - число то записываем его во временную перемнную
  45.                             if ((s.substring(i, i+1).equals("0"))||(s.substring(i, i+1).equals("1"))||(s.substring(i, i+1).equals("2"))||
  46.                             (s.substring(i, i+1).equals("3"))||(s.substring(i, i+1).equals("4"))||(s.substring(i, i+1).equals("5"))||
  47.                             (s.substring(i, i+1).equals("6"))||(s.substring(i, i+1).equals("7"))||(s.substring(i, i+1).equals("8"))||
  48.                             (s.substring(i, i+1).equals("9"))){
  49.                                 current = Double.parseDouble(s.substring(i, i+1));
  50.                                 state = "NUMBER";
  51.                             }
  52.                             //иначе если элемент + - * /, то сразу пишем его в equation
  53.                             else if ((s.substring(i, i+1).equals("+"))||(s.substring(i, i+1).equals("-"))||
  54.                                     (s.substring(i, i+1).equals("*"))||(s.substring(i, i+1).equals("/"))){
  55.                                 equation.add(s.substring(i, i+1));
  56.  
  57.                             }
  58.                             break;
  59.  
  60.                         case "NUMBER":
  61.                             //в случае, если мы в состоянии "NUMBER", то мы либо продолжаем парсить число в current
  62.                             //если опять пришло число
  63.                             if ((s.substring(i, i+1).equals("0"))||(s.substring(i, i+1).equals("1"))||(s.substring(i, i+1).equals("2"))||
  64.                                     (s.substring(i, i+1).equals("3"))||(s.substring(i, i+1).equals("4"))||(s.substring(i, i+1).equals("5"))||
  65.                                     (s.substring(i, i+1).equals("6"))||(s.substring(i, i+1).equals("7"))||(s.substring(i, i+1).equals("8"))||
  66.                                     (s.substring(i, i+1).equals("9"))){
  67.                                 current = current * 10 + Double.parseDouble(s.substring(i, i+1));
  68.                             }
  69.                             //иначе если элемент + - * /, то записываем в equation и число и знак
  70.                             else if ((s.substring(i, i+1).equals("+"))||(s.substring(i, i+1).equals("-"))||
  71.                                     (s.substring(i, i+1).equals("*"))||(s.substring(i, i+1).equals("/"))){
  72.                                 equation.add(current);
  73.                                 equation.add(s.substring(i, i+1));
  74.                                 state = "START";
  75.                             }
  76.                             break;
  77.                     }
  78.                 }
  79.                 //для записи последнего элемента
  80.                 if (state.equals("NUMBER")) {
  81.                     equation.add(current);
  82.                 }
  83.  
  84.                 /*распарсили строку, теперь начинаем расчет
  85.                 сначала ищем все умножения и деления, потом сложения и вычитания*/
  86.                 //анализ "*"; "/"
  87.                 for (int i = 0; i < equation.size(); i++){
  88.                     if (equation.get(i).equals("*")){
  89.                         //упростили ( элементы массива a1; "*"; b1; = a2; null, null, где a2 = a1 * b1)
  90.                         equation.set(i-1, (Double)equation.get(i-1)*(Double)equation.get(i+1));
  91.                         //удаляем лишнее и сдвигаем последующие элементы
  92.                         for (int j = i; j < equation.size()-2; j++){
  93.                             equation.set(j, equation.get(j+2));
  94.                         }
  95.                         equation.remove(equation.size()-1);
  96.                         equation.remove(equation.size()-1);
  97.                         i--;
  98.                     }
  99.                     if (equation.get(i).equals("/")){
  100.  
  101.                         equation.set(i-1, (Double)equation.get(i-1)/(Double)equation.get(i+1));
  102.                         //удаляем лишнее и сдвигаем последующие элементы
  103.                         for (int j = i; j < equation.size()-2; j++){
  104.                             equation.set(j, equation.get(j+2));
  105.                         }
  106.                         equation.remove(equation.size()-1);
  107.                         equation.remove(equation.size()-1);
  108.                         i--;
  109.                     }
  110.                 }
  111.  
  112.                 //теперь операции с меньшим приоритетом: "+"; "-"
  113.  
  114.                 for (int i = 0; i < equation.size(); i++){
  115.                     if (equation.get(i).equals("+")){
  116.  
  117.                         equation.set(i-1, (Double)equation.get(i-1)+(Double)equation.get(i+1));
  118.                         //удаляем лишнее и сдвигаем последующие элементы
  119.                         for (int j = i; j < equation.size()-2; j++){
  120.                             equation.set(j, equation.get(j+2));
  121.                         }
  122.                         equation.remove(equation.size()-1);
  123.                         equation.remove(equation.size()-1);
  124.                         i--;
  125.                     }
  126.                     if (equation.get(i).equals("-")){
  127.  
  128.                         equation.set(i-1, (Double)equation.get(i-1)-(Double)equation.get(i+1));
  129.                         //удаляем лишнее и сдвигаем последующие элементы
  130.                         for (int j = i; j < equation.size()-2; j++){
  131.                             equation.set(j, equation.get(j+2));
  132.                         }
  133.                         equation.remove(equation.size()-1);
  134.                         equation.remove(equation.size()-1);
  135.                         i--;
  136.                     }
  137.                 }
  138.  
  139.                         label.setText(equation.get(0).toString());
  140.             }
  141.         });
  142.     }
  143. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.571 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы