为什么进行循环打印会出现意外结果?

时间:2018-09-25 06:07:20

标签: java for-loop image-processing multidimensional-array

我正在扫描100x100像素的黑白照片,试图基于黑白坐标来打印每个x和y坐标(逐像素)。随着print语句的运行,我可以在控制台中看到预期的结果,但是一旦完成,它将开始为每个结果值生成一个值为0的值,并且仅打印x x以北的值。您能解释一下如何解决此问题吗?

public class BW
{

public static void main(String[] args) {

try {    

BufferedImage original = ImageIO.read(new File("maze.jpg"));
int red;

int[][] outcome = new int[original.getHeight()][original.getWidth()];
for(int i=0; i<original.getHeight(); i++)
{
for(int j=0; j<original.getWidth(); j++)
  {
red = new Color(original.getRGB(i, j)).getRed();

int pixel = 0;
if(red > 1)
{
outcome[i][j] = 255;
System.out.println("x: " + i + " y: " + j + " value: " + outcome[i][j]);
} else {
   outcome[i][j] = 0;
   System.out.println("x: " + i + " y: " + j + " value: " + outcome[i][j]);
} 
}
}

   } catch (IOException e) {e.printStackTrace();}
} 
}

终端输出低于(直到x等于99,y等于99为止,y递增1,并且x从中途从98切换到99,直到

Output

这是我在运行时拍摄的屏幕截图,您可以在其中看到其计算正确。完成后,它变成上面的图像。

While running

1 个答案:

答案 0 :(得分:0)

更改

for(int i=0; i<original.getWidth(); i++)
{
for(int j=0; j<original.getHeight(); j++)
{

for(int i=0; i<original.getHeight(); i++)
{
   for(int j=0; j<original.getWidth(); j++)
   {