有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java参数未按预期传递到函数中

我正在尝试运行一个方法rgbScore(),它传入以前方法中的参数,以计算图像两个像素之间的差异。我希望结果是两个像素之间的差异,但我得到的是(0,0,0)

public void TypeButtonPressed()
{

    filteredImage(GetType());
            int type = GetType();

            filteredrgbValue();
            originalrgbValue();
            rgbScore(originalred, filteredred,  originalgreen, filteredgreen, originalblue, filteredblue); //THIS METHOD

            JOptionPane.showMessageDialog(null, "Original RGB Value:" + oRGBValue + "\nFiltered RGB Value:" + fRGBValue + "\nScore:" + rgbDiff, Options[type], JOptionPane.INFORMATION_MESSAGE);


}

public String rgbScore(int originalred, int filteredred, int originalgreen, int filteredgreen, int originalblue, int filteredblue){

        int redDiff = originalred - filteredred;
        int greenDiff = originalgreen - filteredgreen;
        int blueDiff = originalblue - filteredblue;

        return rgbDiff = "(" + redDiff + "," + greenDiff + "," + blueDiff + ")";


     }

我在类的顶部声明了变量,如下所示:

public int filteredred; public int filteredgreen; public int filteredblue;
public int originalred; public int originalgreen; public int originalblue;

<;附加信息>

filteredrgbValue()

public String filteredrgbValue(){ 
        BufferedImage filtered = filteredImage;

        Color filteredRGBValue = new Color(filtered.getRGB(125, 125));

        int filteredred = filteredRGBValue.getRed();
        int filteredgreen = filteredRGBValue.getGreen();
        int filteredblue = filteredRGBValue.getBlue();

        return fRGBValue = "(" + filteredred + "," + filteredgreen + "," + filteredblue + ")";        

    }

原始RGB值()

public String originalrgbValue(){
        BufferedImage original = unfilteredImage;

        Color originalRGBValue = new Color(original.getRGB(125, 125));

        int originalred = originalRGBValue.getRed();
        int originalgreen = originalRGBValue.getGreen();
        int originalblue = originalRGBValue.getBlue();

        return oRGBValue = "(" + originalred + "," + originalgreen + "," + originalblue + ")";     

    }

共 (2) 个答案

  1. # 1 楼答案

    您正在方法中创建新变量,这些变量隐藏了您的成员变量。删除类型声明,例如:

    public String filteredrgbValue(){ 
            BufferedImage filtered = filteredImage;
    
            Color filteredRGBValue = new Color(filtered.getRGB(125, 125));
    
            // you are declaring new variables here, hiding your member variables...
            //int filteredred = filteredRGBValue.getRed();
            //int filteredgreen = filteredRGBValue.getGreen();
            //int filteredblue = filteredRGBValue.getBlue();
    
            filteredred = filteredRGBValue.getRed();
            filteredgreen = filteredRGBValue.getGreen();
            filteredblue = filteredRGBValue.getBlue();
    
            return fRGBValue = "(" + filteredred + "," + filteredgreen + "," + filteredblue + ")";        
        }
    
  2. # 2 楼答案

    看起来你从来没有初始化过变量,你只是声明了变量。 int的defualt valu为0,在不初始化VAR之前,它将具有默认VAL