Skip to content

Учебник: программирование на Java

Бесплатное онлайн обучение программированию на языке Java

Menu
  • Учебник
  • Блог
  • Карта сайта
Menu

Учебное задание: подсчёт денежных единиц

Posted on 20.06.201722.06.2017 by Java 9

Ключевой момент: в этом разделе представлена программа, которая разбивает большую сумму денег на более мелкие единицы.

Предположим, вы хотите разработать программу, которая изменяет заданную сумму денег на более мелкие денежные единицы. Программа позволяет пользователю вводить сумму в виде значения double, представляющего общую сумму в долларах и центах, и выводит отчет, в котором перечисляется денежный эквивалент в максимальном количестве долларов, четвертаков, десятицентовиков, пятаков и пенни в таком порядке, чтобы получилось наименьшее количество монет.

Вот шаги по разработке программы:

  1. Попросите пользователя ввести сумму в виде десятичного числа, например, 11.56.
  2. Преобразуйте количество (например, 11.56) в центы (1156).
  3. Разделите центы на 100, чтобы найти количество долларов. Получите оставшиеся центы, используя целый остаток от деления на 100 центов.
  4. Разделите оставшиеся центы на 25, чтобы найти количество четвертаков. Получите оставшиеся центы, используя остаток целочисленного деления на 25.
  5. Разделите оставшиеся центы на 10, чтобы найти количество десятицентовиков. Получите оставшиеся центы, используя остаток от деления на 10.
  6. Разделите оставшиеся центы на 5, чтобы найти количество пятаков. Получите оставшиеся центы, используя оставшиеся от целочисленного деления на 5 центы.
  7. Остальные центы - это пенни.
  8. Отобразите результат.

Полная программа:

import java.util.Scanner;

public class ComputeChange {
    public static void main(String[] args) {
        // Создайте Scanner
        Scanner input = new Scanner(System.in);

        // Получите количество
        System.out.print(
                "Введите количество в виде числа с плавающей запятой, например 11,56: ");
        double amount = input.nextDouble();

        int remainingAmount = (int) (amount * 100);

        // Находим количество долларов
        int numberOfOneDollars = remainingAmount / 100;
        remainingAmount = remainingAmount % 100;

        // Находим количество четвертаков и оставшуюся величину
        int numberOfQuarters = remainingAmount / 25;
        remainingAmount = remainingAmount % 25;

        // Находим количество десячков и оставшуюся величину
        int numberOfDimes = remainingAmount / 10;
        remainingAmount = remainingAmount % 10;

        // Находим количество пятаков и оставшуюся величину
        int numberOfNickels = remainingAmount / 5;
        remainingAmount = remainingAmount % 5;

        // Находим количество пенни и оставшуюся величину
        int numberOfPennies = remainingAmount;

        // Display results
        System.out.println("Ваши деньги " + amount + " состоят из");
        System.out.println(" " + numberOfOneDollars + " долларов");
        System.out.println(" " + numberOfQuarters + " четвертаков ");
        System.out.println(" " + numberOfDimes + " десячков");
        System.out.println(" " + numberOfNickels + " пятаков");
        System.out.println(" " + numberOfPennies + " пенни");
    }
}

Переменная amount хранит сумму, введенную с консоли (строка 11). Эта переменная не изменяется, так как сумма должна быть использована в конце программы для отображения результатов. Программа вводит переменную remainingAmount (строка 13) для сохранения изменения оставшейся суммы.

Переменная amount представляет собой десятичную цифру double, представляющую доллары и центы. Она преобразуется в int переменную remainingAmount, которая представляет все центы. Например, если amount равна 11,56, то первоначальная remainingAmount равна 1156. Оператор деления дает целочисленную часть деления, поэтому 1156/100 равно 11. Оператор остатка от деления получает остаток от деления, поэтому 1156 % 100 составляет 56.

Программа извлекает максимальное количество долларов из оставшейся суммы и получает новую оставшуюся сумму в переменной remainingAmount (строки 16-17). Затем она извлекает максимальное количество четвертаков из remainingAmount и получает новый remainingAmount (строки 20-21). Продолжая тот же процесс, программа находит максимальное количество десячков, пятаков и пенни в оставшейся сумме.

Одной из серьезных проблем с этим примером является возможная потеря точности при преобразовании double amount в int remainingAmount. Это может привести к неточному результату. Если вы попытаетесь ввести сумму 10.03, 10.03 * 100 станет 1002.9999999999999. Вы обнаружите, что программа отображает 10 долларов и 2 пенни. Чтобы устранить проблему, введите сумму как целое значение, представляющее центы (смотрите упражнение 22).

Проверь себя:

  1. Покажите вывод с введённой суммой 1,99.

3 thoughts on “Учебное задание: подсчёт денежных единиц”

  1. Семён:
    08.01.2018 в 18:40

    Возможно, тупой вопрос, но почему 10.03*100= 1002.9999999999999?

    Ответить
    1. Java 9:
      09.01.2018 в 10:15

      Приветствую! Ваш вопрос настолько интересный, что я ответил на него отдельным сообщением в блоге: https://java9.ru/?p=524

      Ответить
  2. Денис:
    29.07.2019 в 21:06

    Я выполняю эти задания на ide установленной на андроиде - и ошибок выше описанных нет, 10.03 переводит в 1003

    Ответить

Добавить комментарий Отменить ответ

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

wp-puzzle.com logo




Свежие записи

  • Как установить Java 10 (JDK 10, JRE 10) в Linux
  • Как установить Java 10 (JDK 10, JRE 10) в Windows
  • Почему в программах Java вместо круглых цифр появляются девятки (9999999999999)?
  • Как установить NetBeans 9 для разработки на JDK 9
  • Как установить Java 9 (JDK 9, JRE 9) в Windows

Свежие комментарии

  • м к записи Чтение ввода с консоли
  • Java 9 к записи Чтение ввода с консоли
  • Михаил к записи Чтение ввода с консоли
  • Михаил к записи Упражнения по программированию
  • Михаил к записи Упражнения по программированию

Архивы

  • Июнь 2018
  • Апрель 2018
  • Январь 2018
  • Декабрь 2017
  • Сентябрь 2017
  • Июль 2017
  • Июнь 2017
  • Май 2017




© 2023 Учебник: программирование на Java | Powered by Minimalist Blog WordPress Theme