「区切り文字の一致」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());
}