java - 不处理类内的乘法
问题描述
如何解决乘法错误?公式在嵌套类 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();
}
}
解决方案
问题是,在构造函数中,您只为高度和底数分配值。
private Area1(int height, int base) {
this.height = height;
this.base = base;
}
当你调用这个时,
Area1 square = new Area1(side1,side2);
square.getArea();
该getArea()
方法查找变量side1
和side2
。但是你只设置了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();
推荐阅读
- javascript - 检测碰撞箱 - 碰撞
- r - Dplyr - 创建一个新列“带小数的数字组”
- spring - 包含在 Spring Boot 应用程序中的共享 Spring 库的单独属性
- azure - 代表当前登录到单独 Web 客户端的用户从 API 访问 MS Graph
- android - Android 拨打电话只能在第二次使用
- python - 通过循环输入日期
- permission-denied - Azure CLI 无法在主文件夹之外创建文件夹
- gulp - wppot gulp 更改路径
- javascript - Reactjs 即时搜索
- python - 将多字典从json转换为数据框