2014-02-18 3 views
0

поэтому я сделал этот Java GUI, который в основном решает вопросы SUVAT (для тех из вас, кто не знаком с SUVAT, он в основном говорит вам приблизительное значение того, насколько автомобиль будет ускорен с учетом его скорости/времени или найти, как высоко мяч будет идти с заданной скоростью и т. д. Вы используете его mehcanics). Я знаю, что в моей программе есть недостатки, такие как генерация целочисленных переменных (просто чтобы сохранить порядок вещей), поэтому ответ может быть округлен. Макет не очень хорош, но я только недавно начал программировать. GUI загружается отлично, но когда пользователь нажимает кнопку расчета, то есть, когда он падает. Я подозреваю, что это что-то связано с прослушивателем действия на кнопке, поскольку я думаю, что сделал это немного сложнее, чем предполагалось.Ошибка с прослушивающими действиями

Пользователь в основном выбирает то, что он хочет решить (например, если бы я хотел найти ускорение автомобиля, тогда я бы проверил переключатель ускорения и набрал данные, которые я знаю (т.е. начальная скорость равна 15, конечная скорость равна 30, время равно 2, поэтому ускорение должно составлять 7,5 (8 в этом случае, поскольку использовались ints). Программа выбирает наиболее подходящее уравнение для поиска переменной, которую вы хотите знать.

Это код:

import javax.swing.JFrame; 


public class GUImain { 

public static void main(String[] args) { 

    GUI go = new GUI(); 
    go.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    go.setSize(400,400); 
    go.setVisible(true); 

} 

} 

import java.awt.FlowLayout; 
import java.awt.TextField; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.ItemEvent; 
import java.awt.event.ItemListener; 

import javax.swing.ButtonGroup; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JOptionPane; 
import javax.swing.JRadioButton; 
import javax.swing.JTextField; 

public class GUI extends JFrame implements ActionListener { 

JTextField DISPLACEMENT = new JTextField("Displacement", 20); 
JTextField INITALVELOCITY = new JTextField("Intital Velocity", 20); 
JTextField FINALVELOCITY = new JTextField("Final Velocity", 20); 
JTextField ACCELERATION = new JTextField("Acceleration", 20); 
JTextField TIME = new JTextField("Time"); 

JRadioButton S = new JRadioButton("Displacement", true); 
JRadioButton U = new JRadioButton("Inital Velocity", false); 
JRadioButton V = new JRadioButton("Final Velocity", false); 
JRadioButton A = new JRadioButton("Acceleration", false); 
JRadioButton T = new JRadioButton("Time", false); 
ButtonGroup VARIABLEFINDER; 
JButton CALCULATE = new JButton("Calculate"); 

GUI() { 
    super("SUVAT Solver"); 
    setLayout(new FlowLayout()); 
    add(DISPLACEMENT); 
    add(INITALVELOCITY); 
    add(FINALVELOCITY); 
    add(ACCELERATION); 
    add(TIME); 
    add(CALCULATE); 

    add(S); 
    add(U); 
    add(V); 
    add(A); 
    add(T); 

    VARIABLEFINDER = new ButtonGroup(); 
    VARIABLEFINDER.add(S); 
    VARIABLEFINDER.add(U); 
    VARIABLEFINDER.add(V); 
    VARIABLEFINDER.add(A); 
    VARIABLEFINDER.add(T); 

    // Adding Listeners to the RadioButtons 
    CALCULATE.addActionListener(this); 

} 

@Override 
public void actionPerformed(ActionEvent e) { 

    String dis = DISPLACEMENT.getText(); 
    int SS = Integer.parseInt(dis); 

    String initv = INITALVELOCITY.getText(); 
    int UU = Integer.parseInt(initv); 

    String finalv = FINALVELOCITY.getText(); 
    int VV = Integer.parseInt(finalv); 

    String acc = ACCELERATION.getText(); 
    int AA = Integer.parseInt(acc); 

    String timme = TIME.getText(); 
    int TT = Integer.parseInt(timme); 

    // CALCULATING DISPLACEMENT 
    if (e.getSource() == CALCULATE && S.isSelected()) { 
     if (FINALVELOCITY.getText().equals("Final Velocity")) { 
      SS = (int) ((int) (UU * TT) + (0.5 * AA * (TT * TT))); 
      JOptionPane.showMessageDialog(null, 
        "The displacement claulcated is " + SS); 
     } else if (ACCELERATION.getText().equals("Acceleration")) { 
      SS = (int) 0.5 * (UU + VV) * TT; 
      JOptionPane.showMessageDialog(null, 
        "The displacement claulcated is " + SS); 
     } else if (INITALVELOCITY.getText().equals("Inital Velocity")) { 
      SS = (int) ((VV * TT) - (0.5 * AA * (TT * TT))); 
      JOptionPane.showMessageDialog(null, 
        "The displacement claulcated is " + SS); 
     } else if (TIME.getText().equals("Time")) { 
      SS = (((VV * VV) - (UU * UU))/(2 * AA)); 
      JOptionPane.showMessageDialog(null, 
        "The displacement claulcated is " + SS); 
     } 

    } 
    // CALCULATING THE INITAL VELOCITY 
    if (e.getSource() == CALCULATE && U.isSelected()) { 
     if (FINALVELOCITY.getText().equals("Final Velocity")) { 
      UU = (int) ((SS - (0.5 * AA * (TT * TT)))/(TT)); 
      JOptionPane.showMessageDialog(null, 
        "The intial velocity claulcated is " + UU); 
     } else if (ACCELERATION.getText().equals("Acceleration")) { 
      UU = ((2 * SS)/TT) - VV; 
      JOptionPane.showMessageDialog(null, 
        "The intial velocity claulcated is " + UU); 
     } else if (TIME.getText().equals("Time")) { 
      UU = (int) Math.sqrt(((VV * VV) - (2 * AA * SS))); 
      JOptionPane.showMessageDialog(null, 
        "The intial velocity claulcated is " + UU); 
     } else if (DISPLACEMENT.getText().equals("Displacement")) { 
      UU = (AA * TT) - VV; 
      JOptionPane.showMessageDialog(null, 
        "The intial velocity claulcated is " + UU); 
     } 
    } 

    // CALCULATING THE FINAL VELOCITY 
    if (e.getSource() == CALCULATE && V.isSelected()) { 
     if (INITALVELOCITY.getText().equals("Inital Velocity")) { 
      VV = (int) ((SS + (0.5 * AA * (TT * TT)))/TT); 
      JOptionPane.showMessageDialog(null, 
        "The final velocity claulcated is " + VV); 
     } else if (TIME.getText().equals("Time")) { 
      VV = (int) Math.sqrt(((UU * UU) + (2 * AA * SS))); 
      JOptionPane.showMessageDialog(null, 
        "The final velocity claulcated is " + VV); 
     } else if (DISPLACEMENT.getText().equals("Displacement")) { 
      VV = (AA * TT) + UU; 
      JOptionPane.showMessageDialog(null, 
        "The final velocity claulcated is " + VV); 
     } else if (ACCELERATION.getText().equals("Acceleration")) { 
      VV = ((2 * SS)/TT) - UU; 
      JOptionPane.showMessageDialog(null, 
        "The final velocity claulcated is " + VV); 
     } 
    } 

    // CALCULATING THE ACCELERATION 
    if (e.getSource() == CALCULATE && A.isSelected()) { 
     if (INITALVELOCITY.getText().equals("Inital Velocity")) { 
      AA = (int) ((SS - (VV * TT))/(-0.5 * (TT * TT))); 
      JOptionPane.showMessageDialog(null, 
        "The acceleration claulcated is " + AA); 
     } else if (TIME.getText().equals("Time")) { 
      AA = (((VV * VV) - (UU * UU))/(2 * SS)); 
      JOptionPane.showMessageDialog(null, 
        "The acceleration claulcated is " + AA); 
     } else if (DISPLACEMENT.getText().equals("Displacement")) { 
      AA = (VV - UU)/TT; 
      JOptionPane.showMessageDialog(null, 
        "The acceleration claulcated is " + AA); 
     } else if (FINALVELOCITY.getText().equals("Final Velocity")) { 
      VV = (int) ((SS - (UU * TT))/(0.5 * (TT * TT))); 
      JOptionPane.showMessageDialog(null, 
        "The acceleration claulcated is " + AA); 
     } 
    } 

    // CALCULATING THE TIME 
    if (CALCULATE.getAction() && A.isSelected()) { 
     if (INITALVELOCITY.getText().equals("Inital Velocity")) { 
      AA = (int) ((SS - (VV * TT))/(-0.5 * (TT * TT))); 
      JOptionPane.showMessageDialog(null, 
        "havent done the time calculations yet"); 
     } else if (TIME.getText().equals("Time")) { 
      AA = (((VV * VV) - (UU * UU))/(2 * SS)); 
      JOptionPane.showMessageDialog(null, 
        "havent done the time calculations yet"); 
     } else if (DISPLACEMENT.getText().equals("Displacement")) { 
      AA = (VV - UU)/TT; 
      JOptionPane.showMessageDialog(null, 
        "havent done the time calculations yet"); 
     } else if (FINALVELOCITY.getText().equals("Final Velocity")) { 
      VV = (int) ((SS - (UU * TT))/(0.5 * (TT * TT))); 
      JOptionPane.showMessageDialog(null, 
        "havent done the time calculations yet"); 
     } 
    } 

    } 

} 

Я думаю, что ошибка наступает, когда говорят, что кто-то хочет найти ускорение, используя уравнение который не содержит смещения в нем ((VU)/T), компилятор по-прежнему переопределяет текст по умолчанию в текстовом поле как строку и преобразует строку в int с момента нажатия кнопки расчета, все в текстовом поле преобразуется в int и мои аргументы в прослушивателях действия весьма специфичны.

Это ошибка:

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "Displacement" 
    at java.lang.NumberFormatException.forInputString(Unknown Source) 
    at java.lang.Integer.parseInt(Unknown Source) 
    at java.lang.Integer.parseInt(Unknown Source) 
    at GUI.actionPerformed(GUI.java:66) 
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) 
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) 
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) 
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source) 
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) 
    at java.awt.Component.processMouseEvent(Unknown Source) 
    at javax.swing.JComponent.processMouseEvent(Unknown Source) 
    at java.awt.Component.processEvent(Unknown Source) 
    at java.awt.Container.processEvent(Unknown Source) 
    at java.awt.Component.dispatchEventImpl(Unknown Source) 
    at java.awt.Container.dispatchEventImpl(Unknown Source) 
    at java.awt.Component.dispatchEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) 
    at java.awt.Container.dispatchEventImpl(Unknown Source) 
    at java.awt.Window.dispatchEventImpl(Unknown Source) 
    at java.awt.Component.dispatchEvent(Unknown Source) 
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 
    at java.awt.EventQueue.access$200(Unknown Source) 
    at java.awt.EventQueue$3.run(Unknown Source) 
    at java.awt.EventQueue$3.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
    at java.awt.EventQueue$4.run(Unknown Source) 
    at java.awt.EventQueue$4.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
    at java.awt.EventQueue.dispatchEvent(Unknown Source) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.run(Unknown Source) 

EDIT = Спасибо Борис паук, ты заставил меня понять, что я пытаюсь преобразовать строку в междунар где эта строка не содержит каких-либо цифр. Дурак я. Это довольно смущает. В этом была проблема

В любом случае программа работает нормально, дает округленные ответы, как она должна была делать. Но я уверен, что я немного перетащил код для приложения. Это рабочая часть действия части слушатель рабочего кода:

public void actionPerformed(ActionEvent e) { 



    // CALCULATING DISPLACEMENT 
    if (e.getSource() == CALCULATE && S.isSelected()) { 
     if (FINALVELOCITY.getText().equals("")) { 
      String initv = INITALVELOCITY.getText(); 
      int UU = Integer.parseInt(initv); 
      String timme = TIME.getText(); 
      int TT = Integer.parseInt(timme); 
      String acc = ACCELERATION.getText(); 
      int AA = Integer.parseInt(acc); 

      int SS = (int) ((int) (UU * TT) + (0.5 * AA * (TT * TT))); 

      JOptionPane.showMessageDialog(null, 
        "The displacement claulcated is " + SS); 
     } else if (ACCELERATION.getText().equals("")) { 
      String timme = TIME.getText(); 
      int TT = Integer.parseInt(timme); 
      String finalv = FINALVELOCITY.getText(); 
      int VV = Integer.parseInt(finalv); 
      String initv = INITALVELOCITY.getText(); 
      int UU = Integer.parseInt(initv); 

      int SS = (int) 0.5 * (UU + VV) * TT; 

      JOptionPane.showMessageDialog(null, 
        "The displacement claulcated is " + SS); 
     } else if (INITALVELOCITY.getText().equals("")) { 
      String timme = TIME.getText(); 
      int TT = Integer.parseInt(timme); 
      String acc = ACCELERATION.getText(); 
      int AA = Integer.parseInt(acc); 
      String finalv = FINALVELOCITY.getText(); 
      int VV = Integer.parseInt(finalv); 

      int SS = (int) ((VV * TT) - (0.5 * AA * (TT * TT))); 

      JOptionPane.showMessageDialog(null, 
        "The displacement claulcated is " + SS); 

     } else if (TIME.getText().equals("")) { 

      String finalv = FINALVELOCITY.getText(); 
      int VV = Integer.parseInt(finalv); 
      String initv = INITALVELOCITY.getText(); 
      int UU = Integer.parseInt(initv); 
      String acc = ACCELERATION.getText(); 
      int AA = Integer.parseInt(acc); 

      int SS = (((VV * VV) - (UU * UU))/(2 * AA)); 

      JOptionPane.showMessageDialog(null, 
        "The displacement claulcated is " + SS); 
     } 

    } 
    // CALCULATING THE INITAL VELOCITY 
    if (e.getSource() == CALCULATE && U.isSelected()) { 
     if (FINALVELOCITY.getText().equals("")) { 

      String dis = DISPLACEMENT.getText(); 
      int SS = Integer.parseInt(dis); 
      String acc = ACCELERATION.getText(); 
      int AA = Integer.parseInt(acc); 
      String timme = TIME.getText(); 
      int TT = Integer.parseInt(timme); 


      int UU = (int) ((SS - (0.5 * AA * (TT * TT)))/(TT)); 
      JOptionPane.showMessageDialog(null, 
        "The intial velocity claulcated is " + UU); 


     } else if (ACCELERATION.getText().equals("")) { 
      String timme = TIME.getText(); 
      int TT = Integer.parseInt(timme); 
      String dis = DISPLACEMENT.getText(); 
      int SS = Integer.parseInt(dis); 
      String finalv = FINALVELOCITY.getText(); 
      int VV = Integer.parseInt(finalv); 


      int UU = ((2 * SS)/TT) - VV; 
      JOptionPane.showMessageDialog(null, 
        "The intial velocity claulcated is " + UU); 
     } 


     else if (TIME.getText().equals("")) { 

      String finalv = FINALVELOCITY.getText(); 
      int VV = Integer.parseInt(finalv); 
      String acc = ACCELERATION.getText(); 
      int AA = Integer.parseInt(acc); 
      String dis = DISPLACEMENT.getText(); 
      int SS = Integer.parseInt(dis); 

      int UU = (int) Math.sqrt(((VV * VV) - (2 * AA * SS))); 
      JOptionPane.showMessageDialog(null, 
        "The intial velocity claulcated is " + UU); 
     } else if (DISPLACEMENT.getText().equals("")) { 
      String acc = ACCELERATION.getText(); 
      int AA = Integer.parseInt(acc); 
      String finalv = FINALVELOCITY.getText(); 
      int VV = Integer.parseInt(finalv); 
      String timme = TIME.getText(); 
      int TT = Integer.parseInt(timme); 

      int UU = (AA * TT) - VV; 
      JOptionPane.showMessageDialog(null, 
        "The intial velocity claulcated is " + UU); 
     } 
    } 

    // CALCULATING THE FINAL VELOCITY 
    if (e.getSource() == CALCULATE && V.isSelected()) { 



     if (INITALVELOCITY.getText().equals("")) { 
      String dis = DISPLACEMENT.getText(); 
      int SS = Integer.parseInt(dis); 
      String acc = ACCELERATION.getText(); 
      int AA = Integer.parseInt(acc); 
      String timme = TIME.getText(); 
      int TT = Integer.parseInt(timme); 


      int VV = (int) ((SS + (0.5 * AA * (TT * TT)))/TT); 
      JOptionPane.showMessageDialog(null, 
        "The final velocity claulcated is " + VV); 
     } else if (TIME.getText().equals("")) { 
      String acc = ACCELERATION.getText(); 
      int AA = Integer.parseInt(acc);String dis = DISPLACEMENT.getText(); 
      int SS = Integer.parseInt(dis); 
      String initv = INITALVELOCITY.getText(); 
      int UU = Integer.parseInt(initv); 

      int VV = (int) Math.sqrt(((UU * UU) + (2 * AA * SS))); 
      JOptionPane.showMessageDialog(null, 
        "The final velocity claulcated is " + VV); 
     } else if (DISPLACEMENT.getText().equals("")) { 
      String initv = INITALVELOCITY.getText(); 
      int UU = Integer.parseInt(initv); 
      String timme = TIME.getText(); 
      int TT = Integer.parseInt(timme); 
      String acc = ACCELERATION.getText(); 
      int AA = Integer.parseInt(acc); 

      int VV = (AA * TT) + UU; 
      JOptionPane.showMessageDialog(null, 
        "The final velocity claulcated is " + VV); 
     } else if (ACCELERATION.getText().equals("")) { 
      String timme = TIME.getText(); 
      int TT = Integer.parseInt(timme); 
      String dis = DISPLACEMENT.getText(); 
      int SS = Integer.parseInt(dis); 
      String initv = INITALVELOCITY.getText(); 
      int UU = Integer.parseInt(initv); 

      int VV = ((2 * SS)/TT) - UU; 
      JOptionPane.showMessageDialog(null, 
        "The final velocity claulcated is " + VV); 
     } 
    } 

    // CALCULATING THE ACCELERATION 
    if (e.getSource() == CALCULATE && A.isSelected()) { 
     if (INITALVELOCITY.getText().equals("")) { 
      String dis = DISPLACEMENT.getText(); 
      int SS = Integer.parseInt(dis); 
      String finalv = FINALVELOCITY.getText(); 
      int VV = Integer.parseInt(finalv); 
      String timme = TIME.getText(); 
      int TT = Integer.parseInt(timme); 

      int AA = (int) ((SS - (VV * TT))/(-0.5 * (TT * TT))); 
      JOptionPane.showMessageDialog(null, 
        "The acceleration claulcated is " + AA); 
     } else if (TIME.getText().equals("")) { 
      String dis = DISPLACEMENT.getText(); 
      int SS = Integer.parseInt(dis); 
      String initv = INITALVELOCITY.getText(); 
      int UU = Integer.parseInt(initv); 
      String finalv = FINALVELOCITY.getText(); 
      int VV = Integer.parseInt(finalv); 

      int AA = (((VV * VV) - (UU * UU))/(2 * SS)); 
      JOptionPane.showMessageDialog(null, 
        "The acceleration claulcated is " + AA); 
     } else if (DISPLACEMENT.getText().equals("")) { 

      String finalv = FINALVELOCITY.getText(); 
      int VV = Integer.parseInt(finalv); 
      String initv = INITALVELOCITY.getText(); 
      int UU = Integer.parseInt(initv); 
      String timme = TIME.getText(); 
      int TT = Integer.parseInt(timme); 

      int AA = (VV - UU)/TT; 
      JOptionPane.showMessageDialog(null, 
        "The acceleration claulcated is " + AA); 
     } else if (FINALVELOCITY.getText().equals("")) { 
      String initv = INITALVELOCITY.getText(); 
      int UU = Integer.parseInt(initv); 
      String dis = DISPLACEMENT.getText(); 
      int SS = Integer.parseInt(dis); 
      String timme = TIME.getText(); 
      int TT = Integer.parseInt(timme); 
      int AA = (int) ((SS - (UU * TT))/(0.5 * (TT * TT))); 
      JOptionPane.showMessageDialog(null, 
        "The acceleration claulcated is " + AA); 
     } 
    } 

Im уверен, что я мог бы сделал методу Thats преобразует строку в целые числа в качестве объекта другого класса так, когда я хочу, чтобы преобразовать строка из текстового поля смещения в int, я мог бы просто вызвать этот объект?

+2

Аварии - это самое смутное описание, которое вы могли бы дать. Если вы хотите получить помощь, разместите трассировку ошибки. Далее следуйте [Соглашениям по именованию Java] (http://www.oracle.com/technetwork/java/javase/documentation/codeconventions-135099.html#367) - без этого код невозможно прочитать. Классы должны быть в 'PascalCase' (а не кешках), а переменные должны быть в' LowerCamelCase' (а не кепках). –

+0

, вероятно, из-за вашего вызова getAction() в последнем случае if – user2277872

+3

Ошибка не получает четкости - _java.lang.NumberFormatException: для строки ввода: «Смещение» _. Вы пытаетесь разобрать «String» «Displacement» на «Integer» - это, очевидно, не работает. Подумайте об использовании ['JFormattedTextField'] (http://docs.oracle.com/javase/7/docs/api/javax/swing/JFormattedTextField.html) и [' JLabel'] (http://docs.oracle .com/javase/7/docs/api/javax/swing/JLabel.html) в ['GridBagLayout'] (http://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html) скорее чем размещение меток _inside_ полей ввода. –

ответ

1

Основная проблема была устранена Борис Паук в одном из комментариев.

Что касается неявного вопроса в редактируемой части:

Im pretty sure I could've made the methods thats converts the string into integers as an object of a different class so when I want to convert a string from the displacement textfield to an int, i could just call that object?

Действительно, код в его нынешнем виде не очень элегантно. В основном потому, что он очень повторяющийся. Существует несколько вариантов улучшения этого.Один шаг может быть способ, как

private static int parseIntFrom(JTextField textField, String name) 
{ 
    String string = textField.getText().trim(); 
    try 
    { 
     return Integer.parseInt(string); 
    } 
    catch (NumberFormatException e) 
    { 
     JOptionPane.showMessageDialog(null, 
      "The "+name+" is not a valid integer: "+string); 
    } 
    return 0; 
} 

Этот метод может затем заменить весьма повторяющийся код синтаксического анализа, и, кстати, ввести первый шаг «обработки ошибок», показывая сообщение, когда вход был недействителен:

// Remove this: 
// String timme = TIME.getText(); 
// int TT = Integer.parseInt(timme); 

// Becomes 
int TT = parseIntFrom(TIME, "time"); 

в качестве альтернативы, JFormattedTextField что Борис паук выше может быть использован, чтобы убедиться, что только действительные целочисленные значения могут быть введены в первую очередь.

Я предполагаю, что сложный if/else-constructs можно упростить дальше, но нужно было бы знать предполагаемый рабочий процесс (и, возможно, формулы, которые там используются), чтобы дать более подробные советы. Единственная рекомендация до сих пор является очевидным, по крайней мере, ввести некоторые методы с «говорящими» именами, как

private void calculateDisplacement() { ... }  
private void calculateAcceleration() { ... } 
... 

, которые вызываются из метода actionPerformed.

+0

Да, это некоторые довольно полезные способы избавиться от повторяющегося кода. Это то, что я сделал, так как я нашел это много проще: от перемещения к ИНТ, использовать этот метод: общественного ИНТ STOINT() { \t \t если (. DISPLACEMENT.getText() равно ("")) { \t \t \t int SS = 0; \t \t \t возвращение SS; \t \t} еще { \t \t \t Строка дис = DISPLACEMENT.getText(); \t \t \t int SS = Integer.parseInt (dis); \t \t \t возвращение SS; \t \t} \t} , а затем в классе, писать этот метод: INT з = STOINT(); Так что теперь я могу просто написать уравнения, используя целые числа. – user3323950

Смежные вопросы