Java - 通过构造函数将变量传递给方法

时间:2018-04-08 18:20:31

标签: java object methods

是否可以通过构造函数在方法中发送我需要的变量?

我有2个文件:

public class Recording {

public int height;
public int diameter;
public int weight;

public Recording (int height, int diameter, int weight) {
    this.height = height;
    this.diameter = diameter;
    this.weight = weight;
    }
}

public class Leergut {

public static void main(String[] args) {

    int height;
    int diameter;
    int weight;
    int code;
    int pfand;

    while (code != -1) {

        Recording r = new Recording(System.in.read(), System.in.read(), System.in.read());
        classify(r);
    } else {
        // to be continued
    }

}
public static int classify(Recording r) {

    if (height == 250 && diameter = 67 && weight == 365) { code = 0; return code;}

    else { code = -1; return code ;}
}

我正在寻找一种方法将高度,直径和重量(在Recording类中声明)传递给“classify”方法。

或者我是否需要再次在方法中声明变量,以使其工作?

PS:对于那些试图在我的第一个帖子中帮助我的人,我决定发一个新帖子,因为它会给出一个更好的概述。

5 个答案:

答案 0 :(得分:0)

您可以在录制中为高度,直径和宽度变量创建getter和setter方法。然后,在您的分类方法中调用它们。

示例:

// Methods in Recording.java
public int getWidth() {
    return this.width;
}
public int getDiameter()
    return this.diameter;
}
public int getHeight() {
    return this.height;
}

在分类方法中,只需从记录中获取值:

public static int classify(Recording r) {

    if(r.getHeight() == 250 && r.getDiameter() == 67 && r.getWidth() == 365) {
        // Do whatever
    }
}

答案 1 :(得分:0)

这是一个建议

您必须初始化变量,然后创建3个返回相应值的方法

public class Recording {

     private int height = 0;
     private int diameter = 0;
     private int weight = 0;

     public Recording (int height, int diameter, int weight) {

         this.height = height;
         this.diameter = diameter;
         this.weight = weight;
    }

    public int getHeight()
    {
         return height;
    }

    public int getDiameter()
    {
         return diameter;
    }

    public int getWeight()
    {
         return weight;
    }
}
public static int classify(Recording r) {

    if (r.getHeight() == 250 && r.getDiameter() == 67 && r.getWeight() == 365) { code = 0; return code;}

    else { code = -1; return code ;}
}

答案 2 :(得分:0)

为了将变量传递给方法,您可以这样:

public void myMethod(int variable1, boolean variable2) {
    //method body
}

您可以这样称呼它:

public static void main(String[] args){
     int a = 2;
     boolean f = false;
     myMethod(a,f);
     // If static do:
     // ClassThatHasTheStaticMethod.myMethod(a,f);
}

作为旁注:

while (code != -1) {
    Recording r = new Recording(System.in.read(), System.in.read(), System.in.read());
    classify(r);
} else {
    // to be continued
}

你不能在while代码块后面加上else语句,因为它会导致编译错误。

答案 3 :(得分:0)

你的意思是?

    public static int classify(Recording r) {

    if (r.height == 250 && r.diameter = 67 && r.weight == 365) { 
        code = 0; return code;
    }
    else { 
        code = -1; return code ;
    }

您的录制课程及其字段是公开的,这意味着您只需拨打他们的姓名,点和您想要的字段即可访问它们。

答案 4 :(得分:0)

尝试了一种新方法。再次在方法中声明变量(无法弄清楚如何使用“System.in.read()”调用Setter函数

public static int classify(Recording r) {

    int height = System.in.read();
    int diameter = System.in.read();
    int weight = System.in.read();

    if (height == 250 && diameter == 67 && weight == 365) {int code = 0; return code;}

    else { int code = -1; return code ;}
}

然而,现在我的对象“录制r”告诉我变量无法再解析 和 System.in.read();对于方法内部的3个变量,抛出某种IOException。