diff --git a/Test/Aufgabe2_KellerautomatTest.java b/Test/Aufgabe2_KellerautomatTest.java index 7bd0679..b3dedea 100644 --- a/Test/Aufgabe2_KellerautomatTest.java +++ b/Test/Aufgabe2_KellerautomatTest.java @@ -8,7 +8,9 @@ class Aufgabe2_KellerautomatTest { void calculate() { assertEquals(6664, Aufgabe2_Kellerautomat.calculate("34+62+89+43+***")); assertEquals(58, Aufgabe2_Kellerautomat.calculate("31+78+987+1214++7++++++")); - assertEquals(-1, Aufgabe2_Kellerautomat.calculate("34+*")); - assertEquals(-1, Aufgabe2_Kellerautomat.calculate("8+9+7*2*")); + + assertThrows(IllegalArgumentException.class,()->Aufgabe2_Kellerautomat.calculate("34+34+")); + assertThrows(IllegalArgumentException.class,()->Aufgabe2_Kellerautomat.calculate("34+*")); + assertThrows(IllegalArgumentException.class,()->Aufgabe2_Kellerautomat.calculate("8+9+7*2*")); } } \ No newline at end of file diff --git a/src/Aufgabe2_Kellerautomat.java b/src/Aufgabe2_Kellerautomat.java index a813e24..4807cc1 100644 --- a/src/Aufgabe2_Kellerautomat.java +++ b/src/Aufgabe2_Kellerautomat.java @@ -4,15 +4,19 @@ import java.util.Collections; import java.util.List; public class Aufgabe2_Kellerautomat { - private static String[] words = {"ZZO", "ZZOZZOO", "ZZZOO", "ZZOO", "ZZOZZO", "ZOZ"}; + private static String[] words = {"34+62+89+43+***", "31+78+987+1214++7++++++", "34+34+", "34+*", "8+9+7*2*"}; public static void main(String[] args) { for (String word : words) { - calculate(word); + try { + calculate(word); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } } } - public static int calculate(String word) { + public static int calculate(String word) throws IllegalArgumentException { List wordChars = new ArrayList<>(); for (char symbol : word.toCharArray()) { wordChars.add(symbol); @@ -38,7 +42,6 @@ public class Aufgabe2_Kellerautomat { state = 1; } else { dontAccept(word); - return -1; } break; case 1: @@ -49,7 +52,6 @@ public class Aufgabe2_Kellerautomat { state = 2; } else { dontAccept(word); - return -1; } break; case 2: @@ -68,7 +70,6 @@ public class Aufgabe2_Kellerautomat { state = 2; } else { dontAccept(word); - return -1; } break; case 3: @@ -78,7 +79,6 @@ public class Aufgabe2_Kellerautomat { state = 4; } else { dontAccept(word); - return -1; } break; case 4: @@ -94,7 +94,6 @@ public class Aufgabe2_Kellerautomat { state = 3; } else { dontAccept(word); - return -1; } } else { if (stackSymbol > -1) { @@ -102,7 +101,6 @@ public class Aufgabe2_Kellerautomat { state = 5; } else { dontAccept(word); - return -1; } } break; @@ -112,7 +110,6 @@ public class Aufgabe2_Kellerautomat { state = 6; } else { dontAccept(word); - return -1; } break; case 6: @@ -126,7 +123,7 @@ public class Aufgabe2_Kellerautomat { } private static void dontAccept(String word) { - System.out.println("Word: " + word + "\nnot accepted"); + throw new IllegalArgumentException("Word: " + word + "\nnot accepted"); } private static void accept(String word, int result) {