【问题标题】:Why is for loop printing unexpected results?为什么for循环打印出意外的结果?
【发布时间】:2018-09-25 06:07:19
【问题描述】:

我正在扫描一张 100x100 像素的黑白照片,尝试根据它是黑色还是白色来打印每个 x 和 y 坐标(逐个像素)。当打印语句正在运行时,我可以在控制台中看到预期的结果,但是一旦完成,它就会开始为每个结果值生成一个值 0,并且只打印 x 95 以北。你能解释一下如何解决这个问题吗?

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 -

这是我在它仍在运行时截取的屏幕截图,您可以在其中看到它正在正确计算。完成后就变成上图了。

【问题讨论】:

  • 您所说的“x 95 以北”是什么意思?
  • e.printStackTrace(); 添加到catch 块,看看它是否打印任何东西。
  • @LuCio 没关系,因为数组是正方形
  • @TheScientificMethod 你是对的。 OP 说:100 x 100(因此删除了我的评论)
  • 我看不到你在哪里使用变量pixel?

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


【解决方案1】:

改变

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++)
   {

【讨论】:

  • 没关系,因为它是正方形。
猜你喜欢
  • 2018-04-11
  • 2018-01-10
  • 1970-01-01
  • 1970-01-01
  • 2022-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-08
相关资源
最近更新 更多