"The local variable may not have been initialized" 错误
"The local variable may not have been initialized" error
尽管进行了一些研究,但我不确定为什么会出现此错误。我正在尝试制作一个程序来查看图像并找出哪种颜色更多。这是代码:
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;
}
"row" 变量给我带来了问题,说它没有初始化。这是什么意思?谢谢!
编辑:另外,我知道我真的搞砸了逻辑。我正在努力解决这个问题。
这样做:
for(int row = 0; row<=1920; row++){
这种形式的 for
循环必须在 for
子句的第一部分初始化循环变量,如 per the docs:
for(init clause; expression; for update)
这一行
for(int row; row<=1920; row++){
您没有将行整数初始化为任何值。尝试
for(int row = 0; row<=1920; row++){
回想一下 Java 中 for
循环的语法要求在第一个参数中进行初始化。声明变量 int row
不符合初始化条件。
尽管进行了一些研究,但我不确定为什么会出现此错误。我正在尝试制作一个程序来查看图像并找出哪种颜色更多。这是代码:
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;
}
"row" 变量给我带来了问题,说它没有初始化。这是什么意思?谢谢!
编辑:另外,我知道我真的搞砸了逻辑。我正在努力解决这个问题。
这样做:
for(int row = 0; row<=1920; row++){
这种形式的 for
循环必须在 for
子句的第一部分初始化循环变量,如 per the docs:
for(init clause; expression; for update)
这一行
for(int row; row<=1920; row++){
您没有将行整数初始化为任何值。尝试
for(int row = 0; row<=1920; row++){
回想一下 Java 中 for
循环的语法要求在第一个参数中进行初始化。声明变量 int row
不符合初始化条件。