Java二元运算符'<'操作数类型错误(int与int[]比较)解决方法
编译报错问题:Java二元运算符'<'操作数类型不匹配
报错信息
java: bad operand types for binary operator '<'
报错定位行:
for(int i = 0; i < render.pixels; i++)
问题根因
- 循环变量
i是int基本类型 render.pixels是在Render1类中声明的int[]数组引用类型
Java语法不支持int基本类型和数组引用类型直接使用<做大小比较,且要求不修改pixels的数组类型,避免触发连锁报错。
相关变量声明:
public class Render1 { public final int[] pixels; // 其余类成员省略 }
原始问题代码:
package net.mcreborn.fs; import java.util.Random; public class Render2 extends Render1 { public Render1 render; public void Render1() { render = new Render1(); Random ra = new Random(); for(int i = 0; i < render.pixels; i++) { render.pixels[i] = ra.nextInt(); } } public void render() { draw(render, 0, 0); } }
修复方案
数组对象自带length公开final字段,类型为int,存储数组的总元素个数,直接用这个字段作为循环比较的右值即可,完全不需要修改pixels的原有数组类型,不会引发额外报错。
将报错行的循环条件修改为i < render.pixels.length即可,修正后的对应代码片段:
Random ra = new Random(); // 仅修改循环终止条件,其余逻辑完全不动 for(int i = 0; i < render.pixels.length; i++) { render.pixels[i] = ra.nextInt(); }
注意事项
- 该修改完全保留原有
pixels的int[]类型,不会影响其他依赖像素数组的逻辑 - 需确认
Render1类中已经在构造方法内完成pixels数组的初始化(例如pixels = new int[画布宽度 * 画布高度]),否则运行时会触发空指针异常
内容的提问来源于stack exchange,提问作者FireStone 3942
相关产品推荐
相关产品推荐

