danilochagov
@danilochagov

Вылетает ошибка, когда пытаюсь достать число из строки?

Привет, пишу калькулятор и у меня такая проблема. Когда пишу -2 минус 2, то должен вывести -4, но вылетает почему-то ошибка. Никак не могу понять по чему, пробывал и убирать минус, но всё равно.
Вот макет
5ba0fc23a1019863395636.png
Главные цифры большие это TextView в mainactivity.java он записан в переменную display
При клике на кнопку равно вызывается метод
// do result of two numbers
    public void onEqual (View v) {
            display.setText(makeResult()); // set TextView result of computation
    }

И сам метод makeResult, который ищет в TextView два числа и делает нужную операцию с ними(+, -, /, и др)
Так-же есть переменная operator она статична и хранит текущий оператор, который ввёл юзер, чтобы можно было потом сделать нужное вычисление двух чисел, крч вот код метода
// make result of two numbers
    private String makeResult () {
        double one; // one number
        double two; // two number
        double result; // result of two numbers

        String dis = display.getText().toString(); // take text from TextView for more comfortable(manipulation)

        one = Double.parseDouble(dis.substring(0, dis.indexOf(operator) - 1)); // берём первое число от начала строки до оператора(оператор не берём)
        two = Double.parseDouble(dis.substring(dis.indexOf(operator) + 2, dis.length())); // берём второе число после оператора и до конца строки

        switch (operator) {
            case "+":
                result = one + two;
                break;

            case "-":
                result = one - two;
                break;

            case "/":
                result = one / two;
                break;

            case "x":
                result = one * two;
                break;

            default:
                result = 0;
        }

        operator = "";

        return new DecimalFormat("#.##########").format(result); // do format of result ( 5.0 -> 5 )
    }

Так-же каждый оператор(+, -, /, x) между числами имеет 1 пробел с каждой стороны, для большей красоты и чтобы было проще вытянуть 2 числа и пр. но это уже не важно.

Дак почему вылетает ошибка, почему он не хочет хавать число c отрицательным знаком и делать с ним минус со вторым числом? (-2 - 2) вернёт вылет приложения
  • Вопрос задан
  • 127 просмотров
Пригласить эксперта
Ответы на вопрос 1
@klim76
android/java/sql
Дак почему вылетает ошибка, почему он не хочет хавать число c отрицательным знаком и делать с ним минус со вторым числом? (-2 - 2) вернёт вылет приложения

потому что оператор в этом случае равен "-"
а теперь внимательней посмотрите на эту строку "-2 - 2" что ввёл пользователь и найдите в ней оператор "-". Нашли? Какой у него индекс? Правильно ноль. теперь сделаем
(dis.substring(0, dis.indexOf(operator) - 1)); // берём первое число от начала строки до оператора(оператор не берём)

возьмём подстроку начиная с 0 символа до -1.
Забавно правда? :)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы