我目前正在处理与Triangle相关的对象类,但是我的静态方法遇到了问题。
对于家庭作业,我的教授特别想要这个
静态方法 我目前拥有的是: 这是我收到的错误消息:isTriangle()
,该方法接受3个双精度值作为边的长度,如果给定的边可以形成三角形,则返回true
,否则返回false
。 [帮助:边s1,s2和s3可以形成三角形IF s1 package Homework;
import java.util.Scanner;
public class Triangle {
Scanner scan1 = new Scanner(System.in);
private double side1;
private double side2;
private double side3;
public Triangle(double s1, double s2, double s3) {
this.side1 = s1;
this.side2 = s2;
this.side3 = s3;
}
public static boolean isTriangle(Triangle verify) {
return (side1 < side2 + side3 && side2 < side1 + side3 && side3 < side1 + side2);
}
}
Cannot make a static reference to the non-static field.
答案 0 :(得分:3)
您无法在静态方法内访问实例变量。您只能直接在静态方法内部访问静态变量或静态方法。因此请在isTriangle()方法中使用该参数。
答案 1 :(得分:0)
您可以将静态功能修改为以下内容:
public static boolean isTriangle(Triangle verify) {
return verify.getSide1() < (verify.getSide2() + verify.getSide3())
&& verify.getSide2() < (verify.getSide1() + verify.getSide3())
&& verify.getSide3() < (verify.getSide1() + verify.getSide2());
}
仅供参考:我尚未测试实际代码。
您还应该使用getter / setter或将私有字段公开以使用verify.side1
而不是verify.getSide1()
。
答案 2 :(得分:0)
您必须在静态方法中使用参数verify
,而不是Triangle类中的字段。例如:
public static boolean isTriangle(Triangle verify) {
return (verify.side1 < verify.side2 + verify.side3 && verify.side2 < verify.side1 + verify.side3 && verify.side3 < verify.side1 + verify.side2);
}
答案 3 :(得分:0)
您正在尝试在static
方法内访问实例变量。因此,错误“无法静态引用非静态字段”。我不想透露更多线索,因为这是一项任务,您应该自己弄清楚。
答案 4 :(得分:0)
您正在尝试从静态成员访问实例成员-永远不可能。这是错误的根源。
关于作业,请按照其说明进行操作:
静态方法isTriangle()接受3个双精度值作为边的长度,并返回true 如果给定的边可以形成三角形 <-
我没有看到类型为double
的3个输入的静态方法。如果您按照老师在整个练习中的建议去做,您就会自己得到答案。