You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中用if语句给二维数组新图像降50单位亮度报找不到i、j错如何解决?

错误原因

  • 变量作用域问题:你代码里的i、j是在嵌套for循环头部定义的局部变量,作用域仅限定在循环对应的代码块范围内,循环结束后这两个变量就被销毁了,你把亮度调整的if逻辑写在循环外部,自然会触发cannot find symbol的编译错误。
  • 业务逻辑写反:你当前的判断逻辑是「像素减50小于0时赋值减后的值,否则赋值0」,和需求要求的「减50后小于0则设为0,否则保留减50的结果」完全相反。

修复方案

你可以直接把亮度调整逻辑合并到拷贝数组的循环里,无需单独写循环,修复后的完整代码如下:

import java.util.Arrays;
public class Combining {
    public static void main(String[] args) {
        int[][] imageData={{100,90,255,80,70,255,60,50},
                                     {255,10,5,255,10,5,255,255},
                                     {255,255,255,0,255,255,255,75},
                                     {255,60,30,0,30,60,255,255}};
        int[][] newImage = new int[4][6];
        for (int i = 0; i < imageData.length; i++) {
            for (int j = 0; j < imageData[i].length - 2; j++) {
                // 取原始像素值计算调整后亮度
                int adjustedPixel = imageData[i][j] - 50;
                // 处理边界值
                if(adjustedPixel < 0){
                    adjustedPixel = 0;
                }
                newImage[i][j] = adjustedPixel;
            }
        }
        // 输出最终结果
        System.out.println(Arrays.deepToString(newImage));
    }
}

如果你需要先完成数组拷贝再单独调整亮度,也可以重新写一套嵌套for循环遍历newImage数组做调整,不要直接在循环外部使用仅在循环内有效的i、j变量即可。

内容的提问来源于stack exchange,提问作者Jean Baptiste Asong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 18:57:00