Я хочу преобразовать целые числа в их уважаемые латинские буквы. Например, предположим, что у нас есть список целых чисел, например: [1, 49, 23]. Метод должен возвращать что-то вроде этого:
['I', 'XLIX', 'XXIII']. 49 — это 40 + 9, поэтому это будет «XLIX».
Вот что я написал на Java:
public static List romanizer(List numbers) {
String[] romanLetters = {"I", "IV", "V", "IX", "X", "XL", "L", "XC", "C", "CD", "D", "CM", "M" };
int[] numberArray = { 1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000 };
ArrayList result = new ArrayList();
int times = 0;
for (int h = numberArray.length - 1; h >= 0; h--) {
for (int d = 0; d < numbers.size(); d++) {
times = numbers.get(d) / numberArray[h];
numbers.set(d, numbers.get(d) % numberArray[h]);
}
while (times > 0) {
result.add(romanLetters[h]);
times--;
}
}
return result;
}
Но вместо этого у меня получилось что-то вроде этого: [X, X, I, I, I]. Кто-нибудь может помочь/увидеть проблему?
Для этой диаграммы: [img]https://i.sstatic.net/q8yhy.png[/img]
Я хочу преобразовать целые числа в их уважаемые латинские буквы. Например, предположим, что у нас есть список целых чисел, например: [1, 49, 23]. Метод должен возвращать что-то вроде этого:[code]['I', 'XLIX', 'XXIII']. 49 — это 40 + 9, поэтому это будет «XLIX». Вот что я написал на Java: public static List romanizer(List numbers) { String[] romanLetters = {"I", "IV", "V", "IX", "X", "XL", "L", "XC", "C", "CD", "D", "CM", "M" }; int[] numberArray = { 1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000 }; ArrayList result = new ArrayList(); int times = 0;
for (int h = numberArray.length - 1; h >= 0; h--) { for (int d = 0; d < numbers.size(); d++) { times = numbers.get(d) / numberArray[h]; numbers.set(d, numbers.get(d) % numberArray[h]); } while (times > 0) { result.add(romanLetters[h]); times--; } } return result; } [/code] Но вместо этого у меня получилось что-то вроде этого: [X, X, I, I, I]. Кто-нибудь может помочь/увидеть проблему?