Uebung 3 Loesung

main
Andres Alberto Cruz Aguirre 2024-11-18 00:14:50 +01:00
parent 4b47525e95
commit c398b5b5f8
3 changed files with 111 additions and 0 deletions

View File

@ -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;
}
}

View File

@ -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 == '}');
}
}

View File

@ -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];
}
}