Java 为什么记录面积和记录周长始终为0?

Java 为什么记录面积和记录周长始终为0?,java,methods,Java,Methods,我不明白为什么rec.area和rec.Permiture仅打印为0 矩形 class Rectangles { int weight; int height; int area; int perimeter; int area (int weight, int height) { return weight * height; } int perime

我不明白为什么rec.area和rec.Permiture仅打印为0

矩形

class Rectangles {

        int weight;
        int height;
        int area;
        int perimeter;

        int area (int weight, int height) {
            return  weight * height;
        }

        int perimeter (int weight, int height) {
            return  2 * (weight + height);
        }
    }
class RectanglesTest {
    public static void main(String[] args)  {

        Rectangles rec = new Rectangles();

        rec.weight = 10; 
        rec.height = 15; 

        System.out.println(rec.weight);
        System.out.println(rec.height);
        System.out.println(rec.area);
        System.out.println(rec.perimeter);
    }
}
矩形测试

class Rectangles {

        int weight;
        int height;
        int area;
        int perimeter;

        int area (int weight, int height) {
            return  weight * height;
        }

        int perimeter (int weight, int height) {
            return  2 * (weight + height);
        }
    }
class RectanglesTest {
    public static void main(String[] args)  {

        Rectangles rec = new Rectangles();

        rec.weight = 10; 
        rec.height = 15; 

        System.out.println(rec.weight);
        System.out.println(rec.height);
        System.out.println(rec.area);
        System.out.println(rec.perimeter);
    }
}

您混淆了字段名和方法名,最好是使它们不同,但无论如何要与代码不同

public static void main(String[] args) {

  Rectangles rec = new Rectangles();

  rec.weight = 10; 
  rec.height = 15; 

  System.out.println(rec.weight);
  System.out.println(rec.height);
  System.out.println(rec.area ());
  System.out.println(rec.perimeter ());
}
在使用字段时,不需要向这些方法传递其他参数,因此将它们更改为

int area () { ....}
int perimeter () { ....}
更好的命名方法是动词,例如calcArea

事实上你不使用

int area;
int perimeter;

因此,您可以删除它们

,因为
面积
周长
值没有改变,在您的方法中,您必须使它们
无效
,并将计算出的值分配给请求的属性

class Rectangles {

        int weight;
        int height;
        int area;
        int perimeter;

        void area () {
            area = weight * height;
        }

        void perimeter () {
            perimeter = 2 * (weight + height);
        }
}
main
方法中,必须先调用这些方法

public static void main(String[] args) {

  Rectangles rec = new Rectangles();

  rec.weight = 10; 
  rec.height = 15; 
  rec.area();
  rec.perimeter();
  System.out.println(rec.weight);
  System.out.println(rec.height);
  System.out.println(rec.area);
  System.out.println(rec.perimeter);
}

因为在任何地方都没有为
区域
周长
赋值。您不应该将方法命名为字段,这是错误的(如示例所示)。如果你真的调用了这个方法,你会得到你期望的结果。像
rec.area()
可能还需要指出
area()
permiture()
方法也需要正确实现…@RobbyCornelissen谢谢,我没有看到这一点。WFH?不,每个星期都要传真一个请求,然后你必须另外调用方法来分配这些值。