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]并认为这很疯狂。在那个时候甚至不会给变量赋值的事实只是另一个问题:)

07-25 22:34
查看更多