如何在对象类的静态方法中使用return语句?

时间:2018-10-14 09:28:45

标签: java oop static return boolean

我目前正在处理与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.

5 个答案:

答案 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个输入的静态方法。如果您按照老师在整个练习中的建议去做,您就会自己得到答案。