public static void main(String[] args)
{

 Picture pictObj = new Picture("C:\\caterpillar.jpg");
 pictObj.swapRGB(2);
 pictObj.show();
}

public void swapRGB(){
  Pixel[] pixelArray = this.getPixels();
  Pixel pixel = null;
  int old_green = 0;
  int old_blue = 0;
  int old_red = 0;
  for(int i = 0; i < pixelArray.length;i++){
      pixel = pixelArray[i];
      old_green = pixel.getGreen();
      old_blue = pixel.getBlue();
      old_red = pixel.getRed();
      pixel.setRed(old_green);
      pixel.setGreen(old_blue);
      pixel.setBlue(old_red);
  }
}

public void swapRGB(int numswaps) {
    Pixel[] pixelArray = this.getPixels();
    Pixel pixel = null;
    int old_green = 0;
    int old_blue = 0;
    int old_red = 0;
    int count = 0;

    while(count < numswaps) {
        for(int i = 0; i < pixelArray.length; i++) {
                pixel = pixelArray[i];
                //getting the green, red and blue value of the pixels
                old_green = pixel.getGreen();
                old_blue = pixel.getBlue();
                old_red = pixel.getRed();
                //Swapping Values of colors
                pixel.setRed(old_green);
                pixel.setGreen(old_blue);
                pixel.setBlue(old_red);
                pixel = pixelArray[i];
                count ++;
            }
        }


该程序更改图片中像素的颜色;交换红色,绿色,蓝色值。我的问题是,无论numswaps的值有多少,它只会发生一次。
如果我两次调用函数swapRGB()或swapRGB(numswaps),它会更改颜色,但这不是我希望颜色发生变化的方式,它应根据numswaps的数量进行更改。
函数swapRGB()和swapRGB(numswaps)都在同一类中。

谢谢。

最佳答案

并不是真正的答案,但评论太久。

您可以更改swapRGB(int numswaps)来执行此操作:

public void swapRGB(int numswaps) {
    for (int i = 0; i < numswaps; ++i) {
        swapRGB();
    }
}


它的代码更少了,这也意味着您只需要根据需要使swapRGB()工作。

10-07 22:56