как найти количество условий в управляющей структуре для данного сегмента кода в java - PullRequest
0 голосов
/ 24 апреля 2020

Я хочу получить количество условий для структуры управления для заданного сегмента кода строка за строкой. Может ли кто-нибудь помочь мне получить правильный вывод?

public int[] countCon() {

    char opArray[] ={'<','>','=','!'};

    String[] lines = code.split("\\r?\\n");

    int[] score = new int[lines.length];
    int s = 0;
    score[s] = 0;

    for(String line : lines) {

        String tline = line;

        if(tline.contains("if") || tline.contains("else if") || tline.contains("while") || tline.contains("do") || tline.contains("for") || tline.contains("switch") || tline.contains("case ")){
            if (line.indexOf("if") != -1 ) {
                for(int i = 0;i<=opArray.length-1;i++) {
                    //tline.contains.new String(opArray[i]);
                    opArray[i]++;

                    if(tline.contains("<") || tline.contains(">") || tline.contains("<=") || tline.contains(">=") || tline.contains("==") || tline.contains("!")) {
                        score[s] = score[s]+1;  
                    }
                    else {
                        score[s]=0;
                    }           
                }
            }
        }
    }
}

1 Ответ

0 голосов
/ 24 апреля 2020

Это не тривиальная задача, поскольку вводимые данные могут быть в самых разных стилях. Самый простой способ - использовать регулярные выражения, которые соответствуют ключевым словам ветвления, таким как if (включая else if), while, for, et c .. Если вы игнорируете вызовы методов.

Если вы не хотите использовать регулярное выражение, ваш код также может быть улучшен: нет необходимости учитывать условия вложения или логические выражения внутри конструкции ветвления. Это связано с тем, что ни один оператор, кроме (tenery exp ? a : b), не вводит ветвления.

...