static BufferedImage img1[];
for(int i=0;i<60;i++)
{
img1[i] = new BufferedImage((int) (width), (int) (height), BufferedImage.TYPE_INT_RGB);
}
它在此代码上方的行上显示错误: 令牌“;”上的语法错误,{此标记后的预期
以下代码如下: 此行有多个标记 - 方法断点:视频[entry] - main(String []) - 令牌上的语法错误“)”,;预期 - 令牌上的语法错误“(”,;预期
答案 0 :(得分:1)
这里的一个问题是你不能声明一个方法范围内的变量是静态的。 (或者,您也不能编写既不在方法中也不在静态块中的for循环。)修复其中一个。
这是C / C ++和Java之间的显着差异:在C / C ++中,您可以在函数内声明静态变量,这些变量将在函数调用中保留其值。 Java没有那个。如果您希望变量以这种方式保留其值,则需要使其成为类的(可能是静态的)成员。
答案 1 :(得分:1)
我假设你的其他一些代码中有错误。您在此代码中也遇到错误 - 您需要在使用之前声明img1数组的长度...
BufferedImage img1[] = new BufferedImage[60];
答案 2 :(得分:1)
撇开样式和封装的问题,我怀疑问题与你在课堂上做有关。
要在方法中实例化数组,您可以执行以下操作:
class MyClass1 {
public void initImages(int width, int height) {
BufferedImage img1[] = new BufferedImage[60];
for (int i = 0; i < img1.length; i++) {
img1[i] = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
}
}
}
数组不会转义该方法,因此它会死在那里。
要将数组实例化为静态成员,您可以这样:
class MyClass2 {
static int width = 100;
static int height = 100;
static BufferedImage img1[] = new BufferedImage[60];
static {
for (int i = 0; i < img1.length; i++) {
img1[i] = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
}
}
}
这使用静态初始化块。
......或者这个:
class MyClass3 {
static BufferedImage img1[] = initImages(100, 100);
public static BufferedImage[] initImages(int width, int height) {
BufferedImage img1[] = new BufferedImage[60];
for (int i = 0; i < img1.length; i++) {
img1[i] = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
}
return img1;
}
}
这使用静态方法初始化静态成员。
答案 3 :(得分:0)
您的语法不正确。你必须在类型之后声明一个数组。
static BufferedImage[] img1 = new BufferedImage[2];
是正确的语法。
这是eclipse编辑过的代码。这确实可以编译。
import java.awt.image.BufferedImage;
public class Test {
static BufferedImage[] img1 = new BufferedImage[60];
static{
for(int i=0;i<60;i++)
{
int width = 20;
int height = 20;
img1[i] = new BufferedImage((int) (width), (int) (height), BufferedImage.TYPE_INT_RGB);
}
}
}
我们还发现了以下问题:
我确信大部分原因是因为您只提交了代码段。我把它包括在内是为了完整性。此代码将创建60个大小为20x20的缓冲图像