我不确定为什么我会得到这个错误,尽管研究了一下。我正在尝试制作一个通过图像查看并找出更多颜色的程序。这是代码:
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;
}
它给了我“行”变量的问题,说它没有初始化。这是什么意思?谢谢!
编辑:另外,我知道我真的搞砸了逻辑。我正在努力解决这个问题。
答案 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)