1
    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)

请问有人可以帮我解决这个问题吗?我试过没有成功。

任何帮助将不胜感激

4

1 回答 1

3

您正在尝试重新声明line变量。更改变量名称,您应该没问题:

char c = line[f].charAt(i);

这是一个相当模糊的错误消息,因为当编译器理解您正在声明一个类型char为 name的变量line时,当它查看它看到line[f]并认为这很疯狂的初始化程序时。变量甚至不会被赋值的事实只是另一个问题:)

于 2012-04-06T23:03:44.223 回答