Я не могу понять, что поставить вместо целого числа в блоке try в actionPerformed? - PullRequest
0 голосов
/ 30 апреля 2019

Это курсовой проект, и я пытаюсь настроить EF Scale Reporter с графическим интерфейсом, и он постоянно выдает ошибку, сообщая, что у меня есть NumberFormatException для строкового ввода.

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

Кроме того, это блок try в классе submitButtonClicker, в котором мне нужна помощь, и я не могу понять, что мне нужноделать вместо целого числа

    import java.awt.Dimension;
        import java.awt.event.ActionEvent;
        import java.awt.event.ActionListener;
        import java.util.InputMismatchException;

        import javax.swing.JButton;
        import javax.swing.JFrame;
        import javax.swing.JLabel;
        import javax.swing.JPanel;
        import javax.swing.JTextField;

        public class CalcButtonFrame extends JFrame{

            private JLabel instructions = new JLabel("Please enter windspeed: ");
            private JTextField firstNumber = new JTextField(5);
            private JButton submit = new JButton("Submit");
            private JButton clear = new JButton("Clear");
            private JLabel lowSpeed = new JLabel("65");
            private JLabel highSpeed = new JLabel("200");

            CalcDrawing drawing = new CalcDrawing();

            public CalcButtonFrame() {

                JPanel panel = new JPanel();
                panel.add(instructions);
                panel.add(firstNumber);
                panel.add(submit);
                panel.add(clear);
                panel.add(drawing);

                drawing.setPreferredSize(new Dimension(200, 60));

                ClearButtonListener cbl = new ClearButtonListener();
                clear.addActionListener(cbl);

                SubmitButtonListener sbl = new SubmitButtonListener();
                submit.addActionListener(sbl);
                add(panel);

            }


        class ClearButtonListener implements ActionListener{

            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub
                firstNumber.setText("");

                Calculator empty = new Calculator();
                drawing.adjustFill(empty.determinePercentage());

            }

        }

        class SubmitButtonListener implements ActionListener {

            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub

                try {
                    Integer amount = Integer.parseInt(firstNumber.getText());
                    firstNumber.setText(String.valueOf(amount));        


                    Integer high = Integer.parseInt(highSpeed.getText());
                    highSpeed.setText(String.valueOf(high));        

                    Calculator user = new Calculator(amount, high);

                    //after creating the percentage method
                    drawing.adjustFill(user.determinePercentage());

                }
                catch(NumberFormatException Exception) {
                    String a = firstNumber.getText();
                    int amount = Integer.parseInt(a);

                    String l = lowSpeed.getText();
                    double low = Double.parseDouble(l);

                    if(amount < low){

                        throw new IllegalArgumentException("Must be greater than 65");
                    }

                }

                try {       
                    Integer amount = Integer.parseInt(firstNumber.getText());
                    firstNumber.setText(String.valueOf(amount));        

                    Integer high = Integer.parseInt(highSpeed.getText());
                    highSpeed.setText(String.valueOf(high));

                    Calculator user = new Calculator(amount, high);

                    //after creating the percentage method
                    drawing.adjustFill(user.determinePercentage());

                }
                catch(NumberFormatException e1) {
                        JPanel panel = new JPanel();
                        JLabel enter = new JLabel("Please enter a number");
                        panel.add(enter);
                        System.out.println("not working");
                }



                }
        }
        }

    import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JComponent;

public class CalcDrawing extends JComponent{

    private int x= 10;
    private int y = 10;
    private int totalLength = 170;
    private int height = 30;
    //create another variable after adjustFill
    private int fillForFirstSection = 170;

    //rectangle 
    public void paintComponent(Graphics g) {

        g.setColor(Color.black);
        g.fillRect(x, y, totalLength, height);

        g.setColor(Color.white);
        g.fillRect(x, y, fillForFirstSection, height);

    }

    public void adjustFill(double fillAmount) {
        // TODO Auto-generated method stub

        double fill = totalLength * fillAmount;
        fillForFirstSection = (int)fill;
        repaint();

    }
}

    import javax.swing.JFrame;

public class StartCalc {

    public static void main(String[] args) {
        //TODO Auto-generated method stub

            JFrame frame = new CalcButtonFrame();
            frame.setSize(400, 200);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
    }


}




public class Calculator {
    private double amount;
    private int maxMPH = 200;

    public Calculator() {
        //TODO Auto-generated constructor stub

    }

    public Calculator(double amount, int maxMPH) {
        this.amount = amount;
        this.maxMPH = maxMPH;
    }

    //getters and setters

    public double getAmount() {
        return amount;
    }

    public void setAmount(int amount) {
        this.amount = amount;
    }

    //new method
    public double determinePercentage() {
        return (int)this.amount/(int)this.maxMPH;
    }


}

1 Ответ

0 голосов
/ 30 апреля 2019

Глядя на ...

try {
    Integer amount = Integer.parseInt(firstNumber.getText());
    //...
} catch (NumberFormatException Exception) {
    String a = firstNumber.getText();
    int amount = Integer.parseInt(a);
    //...
}

Если Integer amount = Integer.parseInt(firstNumber.getText()); терпит неудачу, то нет смысла пытаться int amount = Integer.parseInt(a); в блоке catch, так как это уже не удалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...