Java не может найти символьные ошибки, хотя класс и параметры были определены? - PullRequest
0 голосов
/ 18 января 2012

Мне интересно, что я делаю не так с этим: в настоящее время тестируется класс StringDirective, который должен анализировать входную строку для имени создаваемой переменной String.Я думал, что правильно установил класс TPLString, но получаю полный набор ошибок и не могу найти ошибки символов в нескольких строках - параметры, которые я передал, неверны?Этот код должен анализировать строку, разбивать ее на две части, анализировать для имени переменной строки, а затем присвоить ей пустую строку в качестве значения, а затем сохранить информацию об имени и значении переменной в HashMap.

public class StringStatement implements Directive
{   /** StringStatement implements the STRING keyword as defined in class TPLString.
    *   This keyword declares a String variable.
    *   A declared String is empty when first instantiated.
    */

    public void execute(String[] parts)
    {
        //instantiate a TPLString
        String temp=parts[1];
        String[] placeholder = temp.split("[\\s+]");
        String name=placeholder[0];
        String value;



        variables.addVariable(name, value);//add variable to variables hashmap
    }
}

// классы переменных

abstract class TPLVariable
{
    String name;
    TPLVariable(String s)
    {
        name = s;
    }
}

class TPLInt extends TPLVariable
{
    int intValue;
    TPLInt(String s, int v)
    {
        super(s);
        intValue=v;
    }
}

class TPLString extends TPLVariable
{
    String stringValue;
    TPLString(String s, String str)
    {
        super(s);
        stringValue=str;
    }

}

// добавление к переменным HashMap

class TPLVariables  
{  
    private Map<String, TPLVariables> variables = new HashMap<String, TPLVariables>();  

    public void addVariable(String name, String value)  
    {  
// Parses the declaration String, create a TPLVariable of the appropriate type   
// and add it to the map using the variable name as the key 


        if(value.charAt(0)=='"')
        {

            TPLString stringDeclaration= new TPLString(name, value);
            variables.put(name, TPLString(name, value));
            System.out.println(name+ " hex0");//debug
            System.out.println(value+ " hex1");//debug
        }
        else
        {

            TPLInt integerDeclaration= new TPLInt(name, value);
            variables.put(name, TPLInt(name, value));
            System.out.println(name+ " hex2");//debug
            System.out.println(value+ " hex3");//debug
        }


    } 

1 Ответ

0 голосов
/ 19 января 2012

TPLString(name, value) неверный синтаксис.

Если вы хотите новую переменную TPLVariable, вы должны добавить новое ключевое слово перед ней.

variables.put(name, new TPLString(name, value));

Если вы хотите сослаться на предыдущую переменную, которую вы объявляете, вы должны использовать ее имя

TPLString stringDeclaration= new TPLString(name, value);
variables.put(name, stringDeclaration);

Я предлагаю вам следовать принципу SSCCE , чтобы задать вопрос в следующий раз

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...