循环中出现故障。无论计数如何,只迭代一次

时间:2014-06-18 04:06:20

标签: java loops

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)函数都在同一个类中。

谢谢。

1 个答案:

答案 0 :(得分:1)

不是答案,但评论的时间太长了。

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

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

代码少得多,而且这也意味着您只需要让swapRGB()按照您的意愿工作。