所以我的问题是我不能在参数中使用全局变量(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");
}
a
,b
和c
不是全局变量。 Java没有这个概念。它们是类triareamain
的fields。
但是您还创建了具有相同名称的parameters,因此这些名称是shadowing字段。
如果您希望areaCal()
方法直接使用字段,请删除参数:
public double areaCal() {
如果您希望方法使用参数,则在调用中传递值:
double finalarea = areaCal(a, b, c);
如果保留参数,强烈建议您重命名字段或参数。变量名的阴影很容易使程序员感到困惑,并且很可能是导致错误的原因。