是否可以通过构造函数在方法中发送我需要的变量?
我有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:对于那些试图在我的第一个帖子中帮助我的人,我决定发一个新帖子,因为它会给出一个更好的概述。答案 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。