“局部变量可能尚未初始化”错误

时间:2015-02-01 19:08:38

标签: java image

我不确定为什么我会得到这个错误,尽管研究了一下。我正在尝试制作一个通过图像查看并找出更多颜色的程序。这是代码:

import javax.swing.JOptionPane;
import java.io.*;
String fileName = JOptionPane.showInputDialog("Please enter the file name:");
int red    =  0;
int orange =  0;
int yellow =  0;
int green  =  0;
int blue   =  0;
int violet =  0;
void setup(){
  size(1920,1080);
  PImage picture = loadImage("C:\\Users\\Tim\\Downloads\\NMS" + fileName + ".png");
  image(picture,0,0);
  colorReader();
}

int colorReader(){
  for(int row; row<=1920; row++){           < ((Here is the error))
    for(int column; column<=1080; column++){
      color color1 = get(row,column);
      int redColor = (int)red(color1);
      int greenColor = (int)green(color1);
      int blueColor = (int)blue(color1);
      if(255-redColor<=127 && 255-greenColor<=191 && 255-blueColor<=191)
        red++;
      if(255-redColor<=127 && 255-greenColor<=159 && 255-blueColor<=191)
        orange++;
      if(255-redColor<=127 && 255-greenColor<=127 && 255-blueColor<=191)
        yellow++;
      if(255-redColor<=191 && 255-greenColor<=127 && 255-blueColor<=191)
        green++;
      if(255-redColor<=191 && 255-greenColor<=191 && 255-blueColor<=127)
        blue++;
      if(255-redColor<=159 && 255-greenColor<=191 && 255-blueColor<=159)
        violet++;
    }
  }
  System.out.println("There is more ");
  if(red> orange && red>yellow && red>green && red>blue && red>violet)
    System.out.print("red ");
  else
    System.out.print("IT'S A TIE!");
  if(orange> red && orange>yellow && orange>green && orange>blue && orange>violet)
    System.out.print("orange ");
  else
    System.out.print("IT'S A TIE!");
  if(yellow> orange && yellow>red && yellow>green && yellow>blue && yellow>violet)
    System.out.print("yellow ");
  else
    System.out.print("IT'S A TIE!");
  if(green> orange && green>yellow && green>red && green>blue && green>violet)
    System.out.print("green ");
  else
    System.out.print("IT'S A TIE!");
  if(blue> orange && blue>yellow && blue>green && blue>red && blue>violet)
    System.out.print("blue ");
  else
    System.out.print("IT'S A TIE!");
  if(violet> orange && violet>yellow && violet>green && violet>blue && violet>red)
    System.out.print("violet ");
  else
    System.out.print("IT'S A TIE!");
  System.out.print("than anything else in this picture.");
  int warm = red + orange + yellow;
  int cool = green + blue + violet;
  if(warm>cool)
    System.out.println("There are also more warm colors than cool.");
  if(cool>warm)
    System.out.println("There are also more cool colors than warm.");
  if(cool==warm)
    System.out.println("The amount of warm and cool colors are even.");
  return 0;
}

它给了我“行”变量的问题,说它没有初始化。这是什么意思?谢谢!

编辑:另外,我知道我真的搞砸了逻辑。我正在努力解决这个问题。

2 个答案:

答案 0 :(得分:5)

在这一行

 for(int row; row<=1920; row++){       

您没有将行整数初始化为任何值。尝试

 for(int row = 0; row<=1920; row++){       

回想一下,Java中for循环的语法需要在第一个参数中初始化。声明变量int row不符合初始化条件。

答案 1 :(得分:3)

这样做:

for(int row = 0; row<=1920; row++){           

此表单的for循环必须将for子句的第一部分中的循环变量初始化为per the docs

for(init clause; expression; for update)