JavaRush
Акция
Университет
Java FullStack
Python FullStack
new
Web FullStack
new
Обучение
Курсы
Задачи
Опросы
Игры
Помощь
График пинков
Стажировка
Сообщество
Пользователи
Форум
Чат
Статьи
Истории успеха
Активности
Отзывы
Подписки
Светлая тема
Вопрос
  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Все вопросы
JavaRush/Помощь по Java задачам/Примеры на сложение решаются неверно.
Oleh
27 уровень
  • 29.01.2019
  • 1126просмотров
  • 6комментариев

Примеры на сложение решаются неверно.

Вопрос по задаче Решаем пример
Java Core,  9 уровень,  8 лекция
Решен


В методе main подмени объект System.out написанной тобой ридер-оберткой по аналогии с лекцией.
Твоя ридер-обертка должна выводить на консоль решенный пример.
Вызови готовый метод printSomething(), воспользуйся testString.
Верни переменной System.out первоначальный поток.

Возможные операции: + - *
Шаблон входных данных и вывода: a [знак] b = c
Отрицательных и дробных чисел, унарных операторов - нет.

Пример вывода:
3 + 6 = 9

Требования:
  • Класс Solution должен содержать класс TestString.
  • Класс Solution должен содержать публичное статическое поле testString типа TestString, которое сразу проинициализировано.
  • Класс TestString должен содержать публичный void метод printSomething().
  • Метод printSomething() класса TestString должен выводить на экран строку "3 + 6 = ".
  • Метод main(String[] args) класса Solution должен создавать поток PrintStream (используй PrintStream c параметром конструктора ByteArrayOutputStream).
  • Метод main(String[] args) класса Solution должен подменять и восстанавливать поток вывода в консоль объекта System.out.
  • Метод main(String[] args) класса Solution должен вызывать метод printSomething(),объекта testString.
  • Метод main(String[] args) класса Solution должен модифицировать строку выведенную методом printSomething() согласно заданию, и выводить её в консоль.
package com.javarush.task.task19.task1914; /* Решаем пример */ import java.io.ByteArrayOutputStream; import java.io.PrintStream; import java.util.*; import java.math.*; public class Solution { public static TestString testString = new TestString(); public static void main(String[] args) { PrintStream defolt = System.out; ByteArrayOutputStream arr = new ByteArrayOutputStream(); PrintStream print = new PrintStream(arr); System.setOut(print); testString.printSomething(); String s = arr.toString(); System.setOut(defolt); ArrayList<Integer> list = new ArrayList<Integer>(); String[] mass2 = s.split(" "); for(int i=0;i<mass2.length;i++){ if(mass2[i].contains("0")||mass2[i].contains("1")||mass2[i].contains("2")||mass2[i].contains("3")||mass2[i].contains("4")||mass2[i].contains("5")||mass2[i].contains("6")||mass2[i].contains("7")||mass2[i].contains("8")||mass2[i].contains("9")){ list.add(Integer.parseInt(mass2[i])); } } if(mass2[1].equals("+")){ int q = list.get(0) + list.get(1); System.out.println(q); }else if(mass2[1].equals("*")){ int q = list.get(0) * list.get(1); System.out.println(q); }else if(mass2[1].equals("-")){ int q = list.get(0) - list.get(1); System.out.println(q); } } public static class TestString { public void printSomething() { System.out.println("3 + 6 = "); } } }
0
Комментарии (6)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Oleh
Уровень 27
29 января 2019, 13:32
public class Main { public static TestString testString = new TestString(); public static void main(String[] args) { PrintStream defolt = System.out; ByteArrayOutputStream arr = new ByteArrayOutputStream(); PrintStream print = new PrintStream(arr); System.setOut(print); testString.printSomething(); String s = arr.toString(); System.setOut(defolt); ArrayList<Integer> list = new ArrayList<Integer>(); String[] mass = s.split("\\s|\\+|\\-|\\*|\\="); for(String s23:mass){ if(!s23.equals("")) list.add(Integer.parseInt(s23)); } ArrayList<Character> ch = new ArrayList<Character>(); for(int i=0;i<s.length();i++){ char q = s.charAt(i); ch.add(q); } int plus = 0; int minus =0; int mn = 0; for(Character c:ch){ if(c=='+'){ plus++; }else if (c == '-'){ minus++; }else if (c == '*'){ mn++; } } if(plus>0){ int q = list.get(0) + list.get(1); System.out.println(q); }else if(mn>0){ int q = list.get(0) * list.get(1); System.out.println(q); }else if(minus>0){ int q = list.get(0) - list.get(1); System.out.println(q); } } public static class TestString { public void printSomething() { System.out.println("3+6="); } } }
0
VIKTOR NEZHELSKIY
Уровень 27
Expert
22 февраля 2019, 17:13
Можно проще и понятнее:
String[] aXb =  outputStream.toString().split(" ");
int a = Integer.parseInt(aXb[0]), b = Integer.parseInt(aXb[2]), itog = 0;
switch (aXb[1]){
    case "+" : itog = a + b; break;
    case "-" : itog = a - b; break;
    case "*" : itog = a * b; break;
}
String result = String.format("%d %s %d = %d",a,aXb[1],b,itog);
+3
Oleh
Уровень 27
29 января 2019, 13:31
Сделал по другому, не зависит от пробелов, но ошибка не ушла.
0
Oleh
Уровень 27
29 января 2019, 13:31
0
Oleh
Уровень 27
29 января 2019, 13:11
Проблема в том, что split по пробелу?
0
Alex M
Уровень 20
Expert
29 января 2019, 13:57решение
видимо недпонято задание. нужно не просто решить пример, а вывести модифицированную строку с решением. например для System.out.println("3 + 6 = "); в консоль должно быть выведено: 3 + 6 = 9
+4
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2026 JavaRush
MastercardVisa
"Программистами не рождаются" © 2026 JavaRush