编译器构造Java编译时错误:解析时到达文件末尾
public class Test{
public static void main(String[] arg){
System.out.println("Alexander The Great");
}
}
在这段代码中,如果删除字符串中的第一个引号,则会出现3个错误。 1.“)”预期 2.未关闭的字符串文字 3.不是声明
好的,我理解上面的错误
如果我删除字符串中的第二个引号,我也会得到3个错误。 1.未关闭的字符串文字 2. ';' 预期 3.解析时到达文件末尾
我理解1和2,但为什么是3
当大括号缺失时,它不是经常发生吗?但很明显,我有正确数量的大括号。 另外,为什么第一个案例不给出错误“解析时到达文件末尾”
另外,我正在使用jGrasp,java1.6
# 1 楼答案
去掉第一个引号可能会给解析器带来更多的工作空间,因为它会尝试将“Alexander”作为引用。一旦它进入空格,唯一合法的东西就是表达式的其余部分,但它认为它是另一个标识符
它可能会插入奖金
)
以尝试恢复;取决于实施情况省略最后一个引号将把解析器发送到行的末尾。它没有试图关闭该语句,而是丢失了一点并旋转,无法恢复并到达文件末尾
在我看来,由于Java字符串是单行的,所以在这种情况下,它可以做几乎相同的事情,并尝试关闭字符串和/或语句,恢复得更优雅一些。不过,我可能只是错过了一些显而易见的东西
# 2 楼答案
因为搜索引号时遇到EOF。我不确定是否指定了针对错误代码发出的确切错误消息
# 3 楼答案
使用公共静态void main(字符串arg[]) 代替公共静态void main(字符串[]arg)