Определение переменных в массиве символов Java - PullRequest
0 голосов
/ 26 февраля 2012

Привет, у меня есть массив символов, в котором я хранил свое логическое выражение.Мой код считает переменные в списке, и моя проблема заключается в том, что у меня одна и та же переменная, но есть знак без знака, а также скобка.Например: xy + zy 'количество переменных должно быть 4, y и y' разные.

public void simplify(String strexp){

 int length = strexp.length();

     //get the size and variables used in expression
    List<Character> usedVariables = new ArrayList<Character>();
    for (int i = 0; i < length; i++) {
        char c = strexp.charAt(i);
        if (Character.isLetter(c) && !usedVariables.contains(c)&&usedVariables.contains('\'')) {
            usedVariables.add(c);
        }
    }
}

Ответы [ 3 ]

1 голос
/ 26 февраля 2012

Может быть, вы хотите изменить код, используя это:

Matcher m = Pattern.compile("[a-z]'?").matcher(strExpr);
while (m.find()) {
    String var = m.group();
    ...
}
1 голос
/ 26 февраля 2012

Если ваши переменные могут быть длиннее, чем один символ, вы должны рассмотреть список строк, а не символы.

0 голосов
/ 26 февраля 2012

Это простое возможное решение вашей проблемы

public static void simplify(String strexp){

         int length = strexp.length();

             //get the size and variables used in expression
            java.util.List<String> usedVariables = new ArrayList<String>();
            for (int i = 0; i < length; i++) {
                String c = strexp.charAt(i) + "";       

                  // check for character which are not actual


                if (!usedVariables.contains(c)) {
                    usedVariables.add(c);
                }else{
                    if((i+1) < length){
                        String c2 = strexp.charAt(i+1) + "";

                        if(c2.equals("'")){
                            c = c + c2;
                            if (!usedVariables.contains(c)) {
                                usedVariables.add(c);
                            }
                        }
                    }                   
                }
            }
            System.out.println(""+usedVariables.size());
        }
...