Говорит, что не верно выполняет операцию сложения
package com.javarush.task.task19.task1914;
/*
Решаем пример
*/
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.util.ArrayList;
public class Solution {
public static TestString testString = new TestString();
public static void main(String[] args) {
PrintStream out = System.out;
ByteArrayOutputStream tempStorage = new ByteArrayOutputStream();
PrintStream newout = new PrintStream(tempStorage);
System.setOut(newout);
testString.printSomething();
System.setOut(out);
System.out.println(testString.calculator(tempStorage));
}
public static class TestString {
public void printSomething() {
System.out.println("3 + 6 = ");
}
public int calculator(ByteArrayOutputStream tempStorage) {
ArrayList<Integer> intArr = new ArrayList<>();
byte[] byteArr = tempStorage.toByteArray();
char sign = ' ';
String buffer = "";
for(int i = 0; i < byteArr.length; i++){
buffer = "";
if(Character.isDigit(byteArr[i])) {
while (Character.isDigit(byteArr[i])) {
buffer += (char) byteArr[i];
i++;
}
intArr.add(Integer.parseInt(buffer));
}
if(byteArr[i] == '+' || byteArr[i] == '-' || byteArr[i] == '*')
sign = (char)byteArr[i];
}
int result = 0;
if(sign == '+')
result = intArr.get(0) + intArr.get(1);
else if(sign == '-')
result = intArr.get(0) - intArr.get(1);
else if(sign == '*')
result = intArr.get(0) * intArr.get(1);
return result;
}
}
}
цикл for проблемы с логикой(не уверен, просто пробежался глазами, а там sign меняет значение + на = во время цикла, и не используется в нём)
у меня вообще вывело просто 9