首页 > 解决方案 > 不处理类内的乘法

问题描述

如何解决乘法错误?公式在嵌套类 Area1 内,我无法获得用户给出的总值或产品

我试过给它一个像这样的值:

边1 = 0;

或者

边1 = 1;

答案总是等于 0

public void getArea(){
    int area = side1 * side2;
    System.out.println("Area of square: " + area);
Area1 square = new Area1(side1,side2);
        square.getArea();
import java.util.Scanner;
public class Area1 {
    int side1;
    int side2;
    int height;
    int base;
    int width;
    int length;
Area1 (int side1,int side2,int height,int base, int width, int length){
    this.side1 = side1;
    this.side2 = side2;
    this.width = width;
    this.length = length;
}

    private Area1(int height, int base) {
        this.height = height;
        this.base = base;
    }
    
public void getArea(){
    int area = side1 * side2;
    System.out.println("Area of square: " + area);
}
public void getArea1(){
    int area2 = height * base / 2;
    System.out.println("Area of triangle: " + area2);
}
public void getArea2(){
    int area2 = width * length;
    System.out.println("Area of rectangle: " + area2);
}
public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int side1 = 0;
        int side2 = 0;
        int height;
        int base;
        int width;
        int length;
        System.out.println("-----FOR SQUARE-----");
        System.out.println("Please enter 1st side of square: ");
        side1 = input.nextInt();
        System.out.println("Please enter 2nd side of square: ");
        side2 = input.nextInt();
        
        System.out.println("-----FOR TRIANGLE-----");
        System.out.println("Please enter height of triangle: ");
        height = input.nextInt();
        System.out.println("Please enter base of triangle: ");
        base = input.nextInt();
        
        System.out.println("-----FOR RECTANGLE-----");
        System.out.println("Please enter width of rectangle: ");
        width = input.nextInt();
        System.out.println("Please enter length of rectangle: ");
        length = input.nextInt();
        
        System.out.println("=====THE RESULTS ARE=====");
        Area1 square = new Area1(side1,side2);
        square.getArea();
        Area1 triangle = new Area1(height, base);
        triangle.getArea1();
        Area1 rectangle = new Area1(width,length);
        rectangle.getArea2();
}  
}

标签: java

解决方案


问题是,在构造函数中,您只为高度和底数分配值。

private Area1(int height, int base) {
    this.height = height;
    this.base = base;
}

当你调用这个时,

Area1 square = new Area1(side1,side2);
square.getArea();

getArea()方法查找变量side1side2。但是你只设置了height变量base。因此,变量side1和默认情况下side2具有值0

可能的解决方案:您可能应该使用您已经拥有的其他构造函数方法初始化对象,该方法使用所有变量,例如

Area1 square = new Area1(side1,side2,0,0,0,0);
square.getArea();
Area1 triangle = new Area1(0, 0, height, base, 0, 0);
triangle.getArea1();
Area1 rectangle = new Area1(0,0,0,0,width,length);
rectangle.getArea2();

推荐阅读