这应该是一个简单的解释器的一部分,有几个关键字,我把它们分成了不同的类。该程序应该遍历ArrayList,标记字符串并将它们解析为KEYWORD +指令。我使用散列映射将所有这些关键字映射到具有类的接口,其中处理的其余部分发生。目前正在测试这些关键字类之一,但是当我尝试编译时,编译器会抛出“标识符预期”和“非法类型”消息。抛出所有错误信息的行是第18行。代码乱七八糟的地方在哪里?我不知道,因为我从来没有使用过HashTable。谢谢您的帮助!Java哈希表错误 - 标识符预期和非法类型的开始?
import java.util.*;
public class StringSplit
{
interface Directive //Map keywords to an interface
{
public void execute (String line);
}
abstract class endStatement implements Directive
{
public void execute(String line, HashMap DirectiveHash)
{
System.out.print("TPL finished OK [" + " x lines processed]");
System.exit(0);
}
}
private Map<String, Directive> DirectiveHash= new HashMap<String, Directive>();
DirectiveHash.put("END", new endStatement());
public static void main (String[]args)
{
List <String> myString= new ArrayList<String>();
myString.add(new String("# A TPL HELLO WORLD PROGRAM"));
myString.add(new String("STRING myString"));
myString.add(new String("INTEGER myInt"));
myString.add(new String("LET myString= \"HELLO WORLD\""));
myString.add(new String("PRINTLN myString"));
myString.add(new String("PRINTLN HELLO WORLD"));
myString.add(new String("END"));
for (String listString: myString)//iterate across arraylist
{
String[] line = listString.split("[\\s+]",2);
for(int i=0; i<line.length; i++)
{
System.out.println(line[i]);
Directive DirectiveHash=DirectiveHash.get(listString[0]);
DirectiveHash.execute(listString);
}
}
}
}
哪一行给出编译错误?这可能是一个很好的起点。 – 2012-01-11 16:25:53
错误在第18行 – Luinithil 2012-01-11 16:28:11
好的,所以它是第18行。哪一行是第18行? (是的,我可以指望,我只是想指出,当你已经知道线路故障时粘贴你的整个程序会有些反作用。) – 2012-01-11 16:29:23