Столкнулся с другими проблемами, чем описаны в обсуждениях.
В частности, чтобы присвоить переменной a типа int цифровое значение char-а, пришлось этот chsar конвертировать сначала в String, а затем из String-а парсить в Integer.
if(Character.isDigit(c)) {
if(a == -1) a = Integer.parseInt(String.valueOf(c));
else b = Integer.parseInt(String.valueOf(c));
По моему это равносильно тому, чтобы почесать правой рукой левое ухо. Но если значение '3' типа char присвоить переменной типа int, в этой переменной окажется значение 51. Шестёрка таким образом из char-а превращается в 54.
Код для преобразования цифры char в её int-овый аналог правильный (через String и Integer)? Или как-то можно проще?
А по поводу задачи в целом - не могу понять, почему не принимается это решение.
Может не до конца понял условие?package com.javarush.task.task19.task1914;
/*
Решаем пример
*/
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
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);
System.out.println("result: " + result);
//преобразуем
char[] chars = result.toCharArray();
int a = -1;
int b = -1;
char m = 0;
for (char c : chars) {
if(Character.isDigit(c)) {
if(a == -1) a = Integer.parseInt(String.valueOf(c));
else b = Integer.parseInt(String.valueOf(c));
}
if(c == '+') m = '+';
if(c == '-') m = '-';
if(a != -1 && b != -1) break;
}
int res = 0;
if(m == '+') res = a + b;
if(m == '-') res = a - b;
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(a).append(" ").append(m).append(" ").append(b).append(" ").append("=").append(" ").append(res);
String string = stringBuilder.toString();
System.out.println(string);
}
public static class TestString {
public void printSomething() {
System.out.println("3 + 6 = ");
}
}
}