Java报错:运算符*未定义int、Box参数类型,计算盒子体积出错
问题修复说明
核心报错原因
boxes[i]是Box类的实例对象,不属于数值类型,Java没有定义int类型和自定义类对象的乘法运算规则,因此直接写vol * boxes[i]会抛出运算符未定义的错误。- 你当前的体积计算逻辑不符合需求:每个盒子的体积是自身长宽高的乘积,对应逻辑应该封装为
Box类的实例方法,而非直接操作对象数组做乘法。
其他潜在问题
- 你声明的
Box数组长度为5,但仅初始化了前4个元素,第5个元素为null,遍历全数组时会触发空指针异常 - 盒子的长宽高均为
double类型,体积用int存储会丢失小数精度 - 若需求是计算每个盒子的单独体积,不需要定义全局的
vol变量做累乘,直接输出每个盒子的计算结果即可
修复后代码
Box类修改
public class Box { private double length; private double width; private double height; Box(double length, double width, double height) { this.length = length; this.width = width; this.height = height; } public String toString() { return "l: " + length + "\n" + "w: "+ width + "\n" + "h: " + height; } // 新增:单个盒子体积计算逻辑,符合要求定义在Box类中 public double getVolume() { return length * width * height; } // 原有getter、setter方法保持不变 public void setLength(double length) { this.length = length; } public double getLength() { return length; } public void setWidth(double width) { this.width = width; } public double getWidth() { return width; } public void setHeight(double height) { this.height = height; } public double getHeight() { return height; } // 修改:静态方法改为遍历输出每个盒子的单独体积 public static void printAllBoxesVolume(Box[] boxes) { for (int i = 0; i < boxes.length; i++) { // 跳过未初始化的null元素 if (boxes[i] == null) { continue; } double vol = boxes[i].getVolume(); System.out.printf("第%d个盒子的体积为:%.2f%n", i+1, vol); } } }
Main类修改
public class Main { public static void main(String[] args) { // 建议直接定义长度为4的数组,避免冗余空元素 Box[] boxes = new Box[4]; boxes[0] = new Box(2.5, 1.2, 2); boxes[1] = new Box(1.5, 1.2, 2); boxes[2] = new Box(2.5, 1.2, 0.5); boxes[3] = new Box(3.5, 2.1, 0.3); for (int i = 0; i < boxes.length; i++) { System.out.println("第" + (i + 1) + "个盒子的尺寸为:\n" + boxes[i]); } // 调用静态方法输出所有盒子体积 Box.printAllBoxesVolume(boxes); } }
内容的提问来源于stack exchange,提问作者S0r
相关产品推荐
相关产品推荐

