表达式的类型必须是数组类型,但解析为 char

Posted

技术标签:

【中文标题】表达式的类型必须是数组类型,但解析为 char【英文标题】:the type of the expression must be an array type but is resolved to char 【发布时间】:2012-04-20 11:12:21 【问题描述】:
    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 中的异常:未解决的编译问题:

at Sheet.paint(Sheet.java:36)

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

任何帮助将不胜感激

【问题讨论】:

嘿,我为您添加了 Java 标签,以便 Java 专家过来。 =) 记得在运行程序之前检查编译错误。如果您使用的是 Eclipse,那么在开发时保持“Problems”选项卡视图可见会很方便。如果问题选项卡中有任何错误,请在运行前修复它们。你会省去一些头痛。 【参考方案1】:

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

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

这是一条相当晦涩难懂的错误消息,因为当编译器了解到您正在声明一个名为 char 且名称为 line 的变量时,当它查看初始化程序时会看到 line[f] 并认为这很疯狂.那个时候变量甚至不会被分配一个,这只是另一个问题:)

【讨论】:

以上是关于表达式的类型必须是数组类型,但解析为 char的主要内容,如果未能解决你的问题,请参考以下文章

表达式的类型必须是数组类型,但它解析为 ArrayList(试图比较两个数组中的字符串

StringTokenizer使用笔记

C++ Primer 5th笔记(chap 17 标准库特殊设施)正则表达式类和输入序列类型

JAVA表达式

错误赋值给数组类型的表达式

第六章 数组