Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 04.08.2018
Сообщений: 13

Использование рекурсии для String Array Java

25.12.2018, 19:50. Показов 1348. Ответов 5

Студворк — интернет-сервис помощи студентам
Write a RECURSIVE program to solve this problem:
You are given an array of strings like this:
“8”
“+”
“9”
“*”
“4”
“*”
“2”
“-”
“20”
Each character is either a digit or an arithmetic operations +, -, *. (no
division)
Compute and return the the value of this mathematical expression using
RECURSION.

Как можно решить задачу?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.12.2018, 19:50
Ответы с готовыми решениями:

String в рекурсии
Добрый день! Пытаюсь разобраться в рекурсии и столкнулся со следующей проблемой: при выполнении итераций рекурсии переменная String...

String в int[] array?
Всем привет! Подскажите плиз,как String str="12345" преобразовать в интовый массив. int str={1,2,3,4,5} Спасибо!

Array type expected; found: 'java.lang.string'
public boolean numCheck(String str, int sys) { boolean sysCheck = false; for (int i = 0; i < str.length(); i++) ...

5
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
25.12.2018, 20:43
например пиши функцию для двух операндов, потом группируй подвыражения и считай
8+9*4*2-20 -> 8 + (9*4*2 - 20) -> 8 +((9*4*2) - 20) -> 8 +(((9*4)*2)-20)
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
25.12.2018, 21:14
если нужно просто по порядку делать то можно проще, а так - вот кака (специально без стримов), которая сначала умножение выполнит, потом остальное
писал на коленке метод createArray надо бы заменить, в Arrays наверное даже что-то есть аналогичное для этого

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 public static void main(String[] args) {
        String[] arr = {"8", "+", "9", "*", "4", "*", "2", "-", "20"};
        System.out.println(calculate(arr));
    }
 
    public static int calculate(String[] values) {
        if (values.length == 1) {
            return Integer.valueOf(values[0]);
        } else {
            int index;
            for (index = 0; index < values.length - 1; index++) {
                if (values[index].equals("*")) {
                    break;
                }
            }
            if (index < values.length - 1) {
                String[] leftPart = Arrays.copyOfRange(values, 0, index - 1);
                String[] rightPart = Arrays.copyOfRange(values, index + 2, values.length);
                return calculate(createArray(leftPart, rightPart, Integer.valueOf(values[index - 1]) * Integer.valueOf(values[index + 1])));
            } else {
                int digit = Integer.valueOf(values[0]);
                int otherExpression = calculate(Arrays.copyOfRange(values, 2, values.length));
                return values[1].equals("+") ? digit + otherExpression : digit - otherExpression;
            }
        }
    }
 
    private static String[] createArray(String[] first, String[] second, int valueBetween) {
        String[] result = new String[first.length + second.length + 1];
        int i = 0;
        for (String value : first) {
            result[i] = value;
            i++;
        }
        result[i] = String.valueOf(valueBetween);
        i++;
        for (String value : second) {
            result[i] = value;
            i++;
        }
        return result;
    }
0
0 / 0 / 0
Регистрация: 04.08.2018
Сообщений: 13
25.12.2018, 21:51  [ТС]
БОЛЬШОЕ СПАСИБО!!!
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
25.12.2018, 22:09
Цитата Сообщение от 3dg4r Посмотреть сообщение
БОЛЬШОЕ СПАСИБО
Название: Screenshot_1.png
Просмотров: 20

Размер: 4.2 Кб
0
 Аватар для Aviz__
2741 / 2050 / 507
Регистрация: 17.02.2014
Сообщений: 9,470
26.12.2018, 12:40
во, еще, как можно:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import java.util.ArrayList;
import java.util.Arrays;
 
public class Helper {
 
    private static int doArithmeticOperation(int firstOperand, int secondOperand, String operator) {
        int ret = 0;
        switch (operator){
            case "*" : ret = firstOperand * secondOperand;
                break;
            case "-" : ret = firstOperand - secondOperand;
                break;
            case "+" : ret = firstOperand + secondOperand;
                break;
        }
        return ret;
    }
 
    public static void main(String[] args) {
        ArrayList<String> mathSeq = new ArrayList<>(Arrays.asList("1", "+", "9", "*", "4", "*", "2", "-", "20"));
        String [] operatorsPrior = {"*", "+", "-"};
        
        for (String tmpStr : mathSeq)
            System.out.print(" " + tmpStr);
 
        int indexOperat = -1;
        for (String oprt : operatorsPrior) {
            while (mathSeq.size() > 1) {
                indexOperat = mathSeq.indexOf(oprt);
                if (indexOperat != -1) {
                    mathSeq.set(indexOperat - 1,
                            String.valueOf(doArithmeticOperation(Integer.parseInt(mathSeq.get(indexOperat - 1)),
                                    Integer.parseInt(mathSeq.get(indexOperat + 1)),
                                    mathSeq.get(indexOperat))));
                    mathSeq.remove(indexOperat);
                    mathSeq.remove(indexOperat);
                }
                else break;
            }
        }
 
        System.out.println("\nОтвет = " + mathSeq.get(0));
    }
}
Bash
1
2
1 + 9 * 4 * 2 - 20 
Ответ = 53
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.12.2018, 12:40
Помогаю со студенческими работами здесь

Preg_match для array string
Скажите пожалуйста, у меня есть массив со строками (string). Как мне проверить через preg_match каждый символ? if ( preg_match('//',...

Incompatible types: 'array of string' and 'Dynamic array'
Добрый день! В процессе написания программы столкнулся с ошибкой: Unit1.pas(77): E2010 Incompatible types: 'array of string' and...

Std::vector для Array of String
Нужно поместить append первым элементом пустую Array of String. Как-нибудь по-умному это делается? :)

Notice: Array to string conversion in /home/komp/www/site1.my/www/index.php on line 58 Array
Notice: Array to string conversion in /home/komp/www/site1.my/www/index.php on line 58 Array Ни как не могу решить эту...

из array of String в array of Byte
имеется массив стринг &quot;a:array&quot; из 3 строк вот пример: 00111101 01101110 00011000 нужно присвоить &quot;b:array&quot; вот такие...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru