import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
public class Sheet extends JFrame{
private String[] line = {
"wwwwwwffwwwwww",
"wwwwwwfffffffw",
"wwwwwwffwwwffw",
"wwwwwwffwwwffw",
"wwwwwwfffffffw",
"wwwwwwffwwwwww"
};
String line1 = "wwwwwffwwwww";
int tileX =50;
int tileY= 50;
public Sheet(){
//setUndecorated(true);
setVisible(true);
setSize(400,400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//setResizable(false);
setTitle("window");
}
public static void main(String[] args){
Sheet frame = new Sheet();
}
public void paint(Graphics g){
g.setColor(Color.black);
g.drawRect(0,100,1000,1);
for(int i = 0; i<line.length; i++){
for(int f = 0; f<line[i].length(); f++){
char line = line[f].charAt(i);
}
}
}
}
这是我的代码,我正在尝试制作一个根据字符串数组绘制图块的程序。在这种绘制方法中,我有2个for循环,一个用于循环显示行的数组索引,另一个用于循环显示数组的字符。我收到此错误:
线程“ AWT-EventQueue-0”中的异常java.lang.Error:未解决的编译问题:
表达式的类型必须是数组类型,但已解析为char
at Sheet.paint(Sheet.java:36)
请有人帮我解决这个问题?我尝试没有成功。
任何帮助将不胜感激
最佳答案
您正在尝试重新声明line
变量。更改变量名称,就可以了:
char c = line[f].charAt(i);
这是一条相当模糊的错误消息,因为当编译器理解您正在声明名称为
char
的类型为line
的变量时,当它查看初始化程序时会看到line[f]
并认为这很疯狂。在那个时候甚至不会给变量赋值的事实只是另一个问题:)