0

「区切り文字の一致」Java コードに問題があります。

まず第一に、キャラクターカウンターの助けが必要です。何人かの友人が行カウンターを提案しましたが、どれを使用すればよいか、またはコード内でそれらを正確に実装する方法がわかりません。

第二に、複数行のコメントも同様に行うことになっています "/* .... */。ロジックは理解しています

  • 「/」を確認してください
  • 見つかった場合は、次の文字があるかどうかを確認します*
  • スラッシュ スタックにプッシュする
  • チェックする*
  • 見つかった場合は、次の文字があるかどうかを確認します/
  • 私のメッセージを印刷する
  • 私のスラッシュスタックをポップ..

しかし、私は自分の作業カウンターなしでそうする方法を見つけることができないようです. 何か助けはありますか?

これが私のコードです:

private Stack<Character> parenthesisStack = new Stack<Character>();
private Stack<Character> braceStack = new Stack<Character>();
private Stack<Character> bracketStack = new Stack<Character>();
private Stack<Character> slashStack = new Stack<Character>();

public void Match(String input) {
    for (int j = 0; j < input.length(); j++) {
        char currentGroupingSymbol = input.charAt(j);

        switch (currentGroupingSymbol) {
            case '(':
                parenthesisStack.push(currentGroupingSymbol);
                break;

            case '[':
                braceStack.push(currentGroupingSymbol);
                break;

            case '{':
                bracketStack.push(currentGroupingSymbol);
                break;


            case ')':
                if (!parenthesisStack.isEmpty()) {
                    if (currentGroupingSymbol == ')' && parenthesisStack.peek() == '(') {
                        System.out.println("The Parenthesis are Balanced");
                        parenthesisStack.pop();

                    }
                } else {
                    System.out.println("Where is the matching parenthesis for " + currentGroupingSymbol + " at character " + j + "?");
                }
                break;

            case ']':
                if (!braceStack.isEmpty()) {
                    if (currentGroupingSymbol == ']' && braceStack.peek() == '[') {
                        System.out.println("The Braces are Balanced");
                        braceStack.pop();
                    }
                } else {
                    System.out.println("Where is the matching brace for " + currentGroupingSymbol + " at character " + j + "?");
                }
                break;

            case '}':
                if (!bracketStack.isEmpty()) {
                    if (currentGroupingSymbol == '}' && bracketStack.peek() == '{') {
                        System.out.println("The Brackets are Balanced");
                        bracketStack.pop();
                    }
                } else {
                    System.out.println("Where is the matching bracket for " + currentGroupingSymbol + " at character " + j + "?");
                }
                break;

            case '/':
                slashStack.push(currentGroupingSymbol);
                if (input.charAt(j+1) == '/' ) {
                    System.out.println("Look at you with proper comments!");
                } else {
                    System.out.println("Be careful! This " + currentGroupingSymbol + " could mean division! ");
                }
        }
    }
    if (!parenthesisStack.isEmpty()) {
        System.out.println("You have one or more too many open Parenthesis");
    }
    if (!braceStack.isEmpty()) {
        System.out.println("You have one or more too many open Braces");
    }
    if (!bracketStack.isEmpty()) {
        System.out.println("You have one or more too many open Brackets");
    }
}

public static void main(String[] args) throws IOException {
    Scanner scan = new Scanner(System.in);

    System.out.println("Enter a file name");
    String fileName = scan.nextLine();
    File testFile = new File(fileName);


    BufferedReader in = new BufferedReader(new FileReader(testFile));
    String input = new String();
    StringBuilder build = new StringBuilder();
    while ((input = in.readLine()) != null) {
        build.append(input);
    }
    Match prog = new Match();
    prog.Match(build.toString());
}
4

0 に答える 0