Как использовать глобальные переменные в аргументе функции? - PullRequest
0 голосов
/ 10 апреля 2020

Так что моя проблема в том, что я не могу использовать свои глобальные переменные (a, b, c) в своих аргументах. Я должен иметь возможность использовать их в моей логической функции и двойной функции. Что я делаю неправильно? Как я могу это исправить?

 public class triareamain extends javax.swing.JFrame {

    double a, b, c; 

public void DisplayError() {
        side1input.setText("Error");
        side2input.setText("Type");
        side3input.setText("+ Integers");
    }
    public double areaCal(double a, double b, double c) {
        double s = (a + b + c) / 2;
        double area = Math.sqrt(s * (s - a) * (s - b) * (s - c));
        return area;
    }

    public static boolean isValid(double a, double b, double c) {
        if (a > b + c || b > a + c || c > a + b) {
            return true;
        } else {
            return false;
        }
    }

 private void calculatebuttonActionPerformed(java.awt.event.ActionEvent evt) {                                                
        try {
            a = Double.valueOf(side1input.getText());
            b = Double.valueOf(side2input.getText());
            c = Double.valueOf(side3input.getText());

            boolean area = isValid();

            if (area == false) {
                double finalarea = areaCal();
            } else {
                DisplayError();
            }

        } catch (NumberFormatException e) {
            side1input.setText("Error");
            side2input.setText("Type");
            side3input.setText("+ Integers");
        }

1 Ответ

1 голос
/ 10 апреля 2020

a, b и c не являются глобальными переменными . Java не имеет этой концепции. Это поля класса triareamain.

Однако вы также создали параметры с тем же именем, поэтому эти имена shadowing поля .

Если вы хотите, чтобы метод areaCal() напрямую использовал поля, удалите параметры:

public double areaCal() {

Если вы хотите, чтобы метод использовал параметры, передайте значения в вызове :

double finalarea = areaCal(a, b, c);

Если вы сохраняете параметры, я настоятельно рекомендую переименовать либо поля, либо параметры. Затенение имен переменных очень сбивает с толку программиста и с большой вероятностью станет причиной ошибок.

...