Uebung 3 Loesung
parent
4b47525e95
commit
c398b5b5f8
|
|
@ -0,0 +1,44 @@
|
|||
package Uebung3_Andres;
|
||||
|
||||
import java.util.Scanner;
|
||||
|
||||
public class ExpressionChecker {
|
||||
|
||||
private static Stack stack;
|
||||
|
||||
public static void main(String[] args) {
|
||||
Scanner scanner = new Scanner(System.in);
|
||||
System.out.println("Please enter your expression:");
|
||||
|
||||
char[] input = scanner.nextLine().toCharArray();
|
||||
stack = new Stack(input.length);
|
||||
scanner.close();
|
||||
boolean isValidExpression = true;
|
||||
for (char letter: input) {
|
||||
if (isOpenBracket(letter)) {
|
||||
stack.push(letter);
|
||||
continue;
|
||||
}
|
||||
if (isClosingBracket(letter) && !isClosingBracketComplete(letter)) {
|
||||
isValidExpression = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
//If stack is not empty -> expression was not fully closed = invalid. Ex: ()[
|
||||
isValidExpression = isValidExpression && stack.pop() == '\0';
|
||||
System.out.println(isValidExpression ? "Gültig" : "Klammern ungültig");
|
||||
}
|
||||
|
||||
private static boolean isOpenBracket(char letter) {
|
||||
return letter == '{' || letter == '[' || letter == '(';
|
||||
}
|
||||
|
||||
private static boolean isClosingBracket(char letter) {
|
||||
return letter == '}' || letter == ']' || letter == ')';
|
||||
}
|
||||
|
||||
private static boolean isClosingBracketComplete(char letter) {
|
||||
int diff = (int) letter - (int) stack.pop();
|
||||
return diff == 1 || diff == 2;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
package Uebung3_Andres;
|
||||
|
||||
import java.util.Scanner;
|
||||
|
||||
public class ExpressionCheckerV2 {
|
||||
|
||||
private static Stack stack;
|
||||
|
||||
public static void main(String[] args) {
|
||||
Scanner scanner = new Scanner(System.in);
|
||||
System.out.println("Please enter your expression:");
|
||||
|
||||
char[] input = scanner.nextLine().toCharArray();
|
||||
stack = new Stack(input.length);
|
||||
scanner.close();
|
||||
boolean isValidExpression = true;
|
||||
for (char letter: input) {
|
||||
if (isOpenBracket(letter)) {
|
||||
stack.push(letter);
|
||||
continue;
|
||||
}
|
||||
if (isClosingBracket(letter) && !isClosingBracketComplete(letter)) {
|
||||
isValidExpression = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
//If stack is not empty -> exp was not closed = invalid
|
||||
isValidExpression = isValidExpression && stack.pop() == '\0';
|
||||
System.out.println(isValidExpression ? "Gültig" : "Klammern ungültig");
|
||||
}
|
||||
|
||||
private static boolean isOpenBracket(char letter) {
|
||||
return letter == '{' || letter == '[' || letter == '(';
|
||||
}
|
||||
|
||||
private static boolean isClosingBracket(char letter) {
|
||||
return letter == '}' || letter == ']' || letter == ')';
|
||||
}
|
||||
|
||||
private static boolean isClosingBracketComplete(char closeBracket) {
|
||||
char openBracket = stack.pop();
|
||||
return (openBracket == '(' && closeBracket == ')') ||
|
||||
(openBracket == '[' && closeBracket == ']') ||
|
||||
(openBracket == '{' && closeBracket == '}');
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
package Uebung3_Andres;
|
||||
|
||||
public class Stack {
|
||||
|
||||
private char[] stack;
|
||||
private int pointer;
|
||||
|
||||
public Stack(int size) {
|
||||
stack = new char[size];
|
||||
pointer = 0;
|
||||
}
|
||||
|
||||
public void push(char c) {
|
||||
stack[pointer++] = c;
|
||||
}
|
||||
|
||||
public char pop() {
|
||||
if (pointer == 0) return '\0';
|
||||
return stack[--pointer];
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue