我有两个for
循环,通过一个2D像素数组进行图像操作。
但是,for循环的代码在这些方法中的每个方法中都是重复的。
我有办法把它拔出来吗?
/**
* Get pixel array from current image.
*/
public void updatePixels() {
pixels = new int[IMAGE_HEIGHT][IMAGE_WIDTH];
for (int row = 0; row < IMAGE_HEIGHT; row++) {
for (int col = 0; col < IMAGE_WIDTH; col ++) {
pixels[row][col] = image.getRGB(col, row);
}
}
}
/**
* Set pixel array to current image.
*/
public void commitPixels() {
for (int row = 0; row < IMAGE_HEIGHT; row++) {
for (int col = 0; col < IMAGE_WIDTH; col ++) {
image.setRGB(col, row, pixels[row][col]);
}
}
}
public void greyscale() {
updatePixels();
for (int row = 0; row < IMAGE_HEIGHT; row++) {
for (int col = 0; col < IMAGE_WIDTH; col++) {
Color currentColour = new Color(pixels[row][col]);
int r = currentColour.getRed();
int g = currentColour.getGreen();
int b = currentColour.getBlue();
int avg = Math.round((float)((r + g + b) / 3));
pixels[row][col] = new Color(avg, avg, avg).getRGB();
}
}
commitPixels();
}
public void mirror() {
updatePixels();
int [][] pixelCopy = pixels.clone();
for (int row = 0; row < IMAGE_HEIGHT; row++) {
for (int col = 0; col < IMAGE_WIDTH; col++) {
pixels[row][col] = pixelCopy[row][IMAGE_WIDTH - col - 1];
}
}
commitPixels();
}
从代码来看,updatePixels
和commitpixels
似乎可以移到greyscale
的for
循环中
// updatePixel and commitPixel could be made inline as well.
public void updatePixel(int row, int col) {
pixels[row][col] = image.getRGB(col, row);
}
public void commitPixel(int row, int col) {
image.setRGB(col, row, pixels[row][col]);
}
public void computeColor(int row, int col) {
Color currentColour = new Color(pixels[row][col]);
int r = currentColour.getRed();
int g = currentColour.getGreen();
int b = currentColour.getBlue();
int avg = Math.round((float)((r + g + b) / 3));
pixels[row][col] = new Color(avg, avg, avg).getRGB();
}
public void greyscale() {
pixels = new int[IMAGE_HEIGHT][IMAGE_WIDTH];
for (int row = 0; row < IMAGE_HEIGHT; row++) {
for (int col = 0; col < IMAGE_WIDTH; col++) {
updatePixel(row, col);
computeColor(row, col);
commitPixel(row, col);
}
}
}
使用这种方法,可以将执行for循环的次数从3次减少到1次。
我有一个json,包含如下对象数组 在我看来,我想用ngFor呈现json,就像这样 你的名字叫什么? abc 定义 Ghi jkl
本质上,我正在创建自己的字符串类,名为MyString。在这个类中有一个名为getline的函数,它的执行应该和字符串类的getline函数完全一样。 但是经过测试,当函数到达空字符或指定的分隔符时,它似乎不会退出循环,而是不断提示输入,并将该输入添加到已经存在的字符串(c-string)中。 我已经解决了我的上一个问题,但现在我的主服务器在我最后一次getline调用后关闭。
我有一个这样的数组: 中的数组包括另外两个数组(第一个不是必需的,但看看第二个(:这个数组包含不同的 x/y 坐标 ) 我想得到另一个数组的结果,如下所示(解释如下): 数组现在按其 x 值排序 ( -- 我不知道如何编码;这是我到目前为止所拥有的: 编辑:有一点忘记说了,就是应该分组的坐标的不应该大于。看下面的例子:
问题内容: 我有以下for循环: 如何将这个嵌套循环重构为Java 8流? 问题答案: 您可以使用来获取s中所有s的所有:
我正在努力找到确切的答案 我知道外环运行了n次。然后,第二个循环每次运行的次数不同,因为它从i开始: n(n-1)(n-2)。。。2 1. 但是,因为我们只关心最坏的情况(当i=n时),所以第二个循环将运行n-n次,因为它将从i=n开始。这当然没有意义,但这就是我被卡住的地方。我已经运行了这段代码,找到了序列的前四个元素:S=0 1 4 10。。。(其余部分不确定)。 抱歉,如果这不合理,但任何帮