Код писала на разный лад, изначально делала без свитча. Разницы, конечно никакой с тем. что я делала, но постоянно выводит вот это:
java.lang.IllegalStateException: No match found
at java.util.regex.Matcher.group(Matcher.java:536)
at com.javarush.task.task19.task1914.Solution.main(Solution.java:40)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
Я не пойму. что не так?
package com.javarush.task.task19.task1914;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
/*
Решаем пример
*/
public class Solution {
public static TestString testString = new TestString();
public static void main(String[] args) {
PrintStream consoleStream = System.out;
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
PrintStream stream = new PrintStream(outputStream);
System.setOut(stream);
testString.printSomething();
String result = outputStream.toString();
System.setOut(consoleStream);
Matcher matcher = Pattern.compile("^(\\d+)\\s*[+\\-*]\\*s(\\d+)\\s*=").matcher(result);
int c = 0;
while (matcher.find()) {
int a = Integer.parseInt(matcher.group(1));
int b = Integer.parseInt(matcher.group(3));
switch (matcher.group(2)) {
case "+":
c = a + b;
break;
case "-":
c = a - b;
break;
case "*":
c = a * b;
break;
}
}
System.out.println(matcher.group(0) + " " + c);
}
public static class TestString {
public void printSomething() {
System.out.println("3 + 6 = ");
}
}
}