這應該是一個簡單的解釋器的一部分,有幾個關鍵字,我把它們分成了不同的類。該程序應該遍歷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