Java. Деление в столбик. Съезжает вывод в консоль — java

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд
Загрузка...

Вопрос:


Кто-нибудь может подсказать почему при делении 1034/15 съезжает вывод в консоль?

public class Division {

    private StringBuffer result = new StringBuffer();
    private StringBuffer quotient = new StringBuffer();
    private StringBuffer reminder = new StringBuffer();

    public String createLongDivision(int dividend, int divisor) {

        dividend = Math.abs(dividend);
        divisor = Math.abs(divisor);

        if (divisor == 0) {

            throw new IllegalArgumentException("Divisor can't be 0");

        }

        if (dividend < divisor) {

            throw new IllegalArgumentException("Dividend can't be less than divisor");

        }

        String[] digits = String.valueOf(dividend).split("");
        Integer reminderNumber;
        Integer multiplyResult;
        Integer divisorDigit = calculateDigit(divisor);
        Integer mod;

        for (int i = 0; i < digits.length; i++) {

            reminder.append(digits[i]);
            reminderNumber = Integer.parseInt(reminder.toString());

            if (reminderNumber >= divisor) {

                mod = reminderNumber % divisor;
                multiplyResult = reminderNumber / divisor * divisor;

                String lastReminder = String.format("%" + (i + 2) + "s", "_" + reminderNumber.toString());
                result.append(lastReminder).append("n");

                String multiply = String.format("%" + (i + 2) + "d", multiplyResult);
                result.append(multiply).append("n");

                Integer tab = lastReminder.length() - calculateDigit(multiplyResult);
                result.append(createDivisor(reminderNumber, tab)).append("n");

                quotient.append(reminderNumber / divisor);

                reminder.replace(0, reminder.length(), mod.toString());
                reminderNumber = Integer.parseInt(reminder.toString());

            } 


            if (i == digits.length - 1) {

                result.append(String.format("%" + (i + 2) + "s", reminderNumber.toString())).append("n");

            }
        }

        modifyResultView(dividend, divisor);
        return result.toString();

    }

    private String createDivisor (Integer reminderNumber, Integer tab) {

        return assemblyString(tab, ' ') + assemblyString(calculateDigit(reminderNumber), '-');

    }

    private int calculateDigit(int i) {

        return (int) Math.log10(i) + 1;

    }

    private String assemblyString(int numberOfSymbols, char symbol) {

        StringBuilder string = new StringBuilder();

        for (int i = 0; i < numberOfSymbols; i++) {

            string.append(symbol);

        }

        return string.toString();

    }

    private void modifyResultView(Integer dividend, Integer divisor) {

        int[] index = new int[3];

        for (int i = 0, j = 0; i < result.length(); i++) {

            if (result.charAt(i) == 'n') {

                index[j] = i;

                j++;

            }

            if (j == 3) {

                break;

            }

        }

        int tab = calculateDigit(dividend) + 1 - index[0];
        result.insert(index[2], assemblyString(tab, ' ') + "│" + quotient.toString());
        result.insert(index[1], assemblyString(tab, ' ') + "│" + assemblyString(quotient.length(), '-'));
        result.insert(index[0], "│" + divisor);
        result.replace(1, index[0], dividend.toString());

    }

    public static void main(String[] args) {

        Division division = new Division();

        System.out.println(division.createLongDivision(1034, 15));

        }

}

введите сюда описание изображения

Автор вопроса: Deepstack

Источник

Вам также может быть интересно:

Переадресация запросов по данным из тела запроса — java nginx spring-mvc
Вопрос: Существует сервис с "кучей" контроллеров. Стоит задача "распилить" данный сервис на микросервисы. Сами микросервисы будут крутится на самостоятельных машинах. Основная проблема в том, что есть ...
Доступ к cookies другого сайта — javascript
Вопрос: Не знаю, или правильно написал вопрос в заголовке. Вообще вопрос такой. Есть, например виджет коминтариев фб, его можно установить на свой сайт. При заходе, он ...
Не видит загрузочной флешки с Ubuntu — linux windows ubuntu
Вопрос: Решил установить Ubuntu второй ОС. Скачал образ и установил его на флешку. Память для будущей Ubuntu выделил ещё когда устанавливал Windows. Проблема в том, что когда ...
Как устроен Netty? — java async netty
Вопрос: Немного почитал про асинхронные сокеты и про фреймворк Netty, но у меня возник вопрос о том как устроен механизм обработки многочисленных запросов к Netty. ...
Как реализовать правильную связь классов в javascript? — javascript ооп полиморфизм
Вопрос: Теперь в деталях : имеются несколько классов : class RemovedItem { constructor(value, key) { this.value = value; ...
Модификация Observable при помощи дополнительного запроса в сеть — android kotlin rxjava
Вопрос: работаю с Vk.APi и произвожу поиск списка групп. В ответе с API получаю список групп, но проблема в том, что каждая из них не содержит ...
Как загрузить Layout в Activity или View из переменной типа String — android xml activity
Вопрос: Обычно внешний вид Activity или View загружается из файлов типа *.xml, вложенных в папку res/layout проекта. А как сделать, чтобы внешний вид загружался из ...
Как выбрать максимальное значение в столбце? — sql sql-server
Вопрос: У меня есть таблица которая состоит из 2 столбцов OrderID OrderDate ------------------------------- 1021 1976-07-04 00:00:00 2312 ...
Форма TextView XML — android xml
Вопрос: Прошу понять меня правильно: Я не прошу что-то сделать за меня и предоставить готовый код ВОПРОС: Какие атрибуты необходимо использовать, чтобы выполнить такой же вид ...
Отловить закрытие консольной программы — c# console
Вопрос: Есть консольное приложение (C#), мне нужно отловить событие его закрытия. Это может быть и Ctrl+C и нажатие на крестик, вообще любое событие после которого ...
Странное поведение jQuery — jquery
Вопрос: Есть веб-страница, на которой естественно имеются стили и скрипты. При очистке кэша и полной перезагрузке страницы (Ctrl + F5) jQuery неправильно определяет height() и ...
Оверлей для любой программы и игры DirectX в фуллскрине через инжект dll — c# wpf
Вопрос: Всем привет. Хочу сделать универсальный оверлей, который при запуске из консольного приложения будет инжектить dll с самим оверлеем в любую программу, как у стима/дискорда. Про инжект ...
Использование, связка бинов в Java — java netbeans xhtml
Вопрос: У меня есть example.xhtml, я не знаю как правильно его заполнить, так как NetBeans предлагает один вариант, а видео, где все работает, заполняют по-другому.Netbeans: <?xml ...
Удалил rfremix-relese при попытке обновления — linux fedora
Вопрос: Сегодня хотел обновить Руссиан Федора Ремикс (RFRemix) 28->29. dnf upgrade выдал сообщение о конфликте в пакете rfremix-release-2.ххххххх Немного посомневался, но решил что это модуль именно ремикса ...
Компиляция QT 5.11 на Raspberry Pi 3 — c++ qt5 raspberry-pi
Вопрос: Raspberry Pi идет в комплекте с QT 5.3 и QT Creator 3.2.1. Есть необходимость обновить версию QT до 5.11. Чтобы была возможность использовать новые ...

Оставьте ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *