이것은 여러 개의 키워드로 된 간단한 인터프리터의 일부이기 때문에 다른 클래스로 만들었습니다. 이 프로그램은 ArrayList를 반복하고, 문자열을 토큰 화하고 KEYWORD + 지침으로 파싱합니다. 해시 맵을 사용하여 이러한 모든 키워드를 클래스가있는 인터페이스에 매핑합니다. 나머지 처리가 이루어지는 곳입니다. 현재 이러한 키워드 클래스 중 하나를 테스트하지만 컴파일러를 컴파일하려고하면 "식별자가 예상 됨"및 "형식이 잘못되었습니다"메시지가 throw됩니다. 모든 오류 메시지를 던지는 줄은 18 행입니다. 코드가 어색하게 움직이는 곳은 어디입니까? 전에 HashTable을 사용 해본 적이 없으므로 말할 수 없습니다. 도와 주셔서 감사합니다!자바 해시 테이블 오류 - 식별자가 예상되고 잘못된 유형의 시작입니까?
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);
}
}
}
}
어떤 줄에서 컴파일 오류가 발생합니까? 아마 좋은 출발점 일 겁니다. –
18 번 라인에 오류가 있습니다. – Luinithil
18 번 라인입니다. 18 번 라인은 무엇입니까? (예, 셀 수 있습니다. 어떤 줄이 실패했는지 알았을 때 전체 프로그램을 붙여 넣는 것은 다소 비생산적인 것이라고 지적하려고합니다.) –