мета-данные страницы
Занятие 16.10.13
Рассмотрим следующую задачу:
Задача
С клавиатуры вводится натуральное число n
, меньшее чем 4000. Напечатайте в консоли число n
, записанное римскими цифрами.
О римских цифрах можно прочитать, например, в википедии.
Решение
Создадим новый класс RomanNumerals
, методы которого нужны для перевода числа в римскую систему счисления. Все поля и методы в данном классе будут статическими.
package com.nsunc.wiki.penname; public class RomanNumerals { /* * Строки, являющиеся записями римских цифр. */ private static String one = "I"; private static String five = "V"; private static String ten = "X"; private static String fifty = "L"; private static String oneHundred = "C"; private static String fiveHundred = "D"; private static String oneThousand = "M"; /* * Общий метод перевода. */ private static String genericConversion(String I, String V, String X, int d, int n) { String s = ""; if (n < 4 * d) { for (int i = 1; i * d <= n; i++) s = s + I; } else if (n < 5 * d) { s = I + V; } else if (n < 9 * d) { s = V; for (int i = 6; i * d <= n; i++) s = s + I; } else { s = I + X; } return s; } /* * Сам перевод. */ public static String convert(int n) { return genericConversion(oneHundred, fiveHundred, oneThousand, 100, n % 1000) + genericConversion(ten, fifty, oneHundred, 10, n % 100) + genericConversion(one, five, ten, 1, n % 10); } }
Задание
Предложенное решение работает правильно только для чисел, меньших 1000. (Убедитесь в этом!) Измените метод convert
так, чтобы предложенное решение правильно работало для всех чисел, меньших 4000.