如何在函数自变量中使用全局变量?

问题描述 投票:-1回答:1

所以我的问题是我不能在参数中使用全局变量(a,b,c)。我需要能够在我的布尔函数和double函数中使用它们。我究竟做错了什么?我该如何解决?

 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");
        }
java function double boolean-expression
1个回答
0
投票

abc不是全局变量。 Java没有这个概念。它们是类triareamainfields

但是您还创建了具有相同名称的parameters,因此这些名称是shadowing字段。

如果您希望areaCal()方法直接使用字段,请删除参数:

public double areaCal() {

如果您希望方法使用参数,则在调用中传递值:

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

如果保留参数,强烈建议您重命名字段或参数。变量名的阴影很容易使程序员感到困惑,并且很可能是导致错误的原因。

© www.soinside.com 2019 - 2024. All rights reserved.