숫자를 로마 숫자로 바꾸기 예제 코드 및 설명
포스트 난이도: HOO_Junior
# Example Code
/**
* This class converts a user-inputted number into its Roman numeral equivalent.
* It prompts the user until a number within the range of 1 to 90 is entered.
*/
import java.util.Scanner; // Import statement for java.util.Scanner
public class RomanNumeralConverter {
// Variable to store the user's input
private int number;
/**
* Main method that launches the program.
* @param args Not used in this application.
*/
public static void main(String[] args) {
RomanNumeralConverter converter = new RomanNumeralConverter();
converter.promptUser();
}
/**
* Prompts the user for a number between 1 and 90.
* If the input is outside the range, it asks again.
*/
public void promptUser() {
// Scanner object for capturing user input
Scanner scanner = new Scanner(System.in);
do {
// Prompt the user for input
System.out.print("Enter a number between 1 and 90: ");
number = scanner.nextInt();
// Check for valid range
if (number < 1 || number > 90) {
System.out.println("Invalid number. Please try again.");
}
} while (number < 1 || number > 90);
// Convert and display the Roman numeral
String romanNumeral = convertToRoman(number);
System.out.println("The Roman numeral is: " + romanNumeral);
}
/**
* Converts an integer to a Roman numeral.
* @param num The number to convert.
* @return The Roman numeral as a String.
*/
public String convertToRoman(int num) {
// Mapping of numbers to Roman numerals
String[] romanNumerals = {"I", "IV", "V", "IX", "X", "XL", "L", "XC"};
int[] values = {1, 4, 5, 9, 10, 40, 50, 90};
// StringBuilder to construct the Roman numeral
StringBuilder roman = new StringBuilder();
// Construct the Roman numeral from the largest value down
for (int i = values.length - 1; i >= 0; i--) {
while (num >= values[i]) {
num -= values[i];
roman.append(romanNumerals[i]);
}
}
return roman.toString();
}
}
import java.util.Scanner; // Import statement for java.util.Scanner
/**
* This class converts a user-inputted number into its Roman numeral equivalent.
* It prompts the user until a valid number is entered or 'x' to exit.
*/
public class RomanNumeralConverter {
/**
* Main method that launches the program.
* @param args Not used in this application.
*/
public static void main(String[] args) {
RomanNumeralConverter converter = new RomanNumeralConverter();
converter.promptUser();
}
/**
* Prompts the user for a number between 1 and 90 or 'x' to exit.
* Repeats until the user chooses to exit.
*/
public void promptUser() {
Scanner scanner = new Scanner(System.in);
String input;
while (true) {
System.out.print("Enter a number between 1 and 90 or 'x' to exit: ");
input = scanner.next();
if (input.equalsIgnoreCase("x")) {
System.out.println("Exiting the program.");
break;
}
try {
int number = Integer.parseInt(input);
if (number < 1 || number > 90) {
System.out.println("Invalid number. Please try again.");
} else {
String romanNumeral = convertToRoman(number);
System.out.println("The Roman numeral is: " + romanNumeral);
}
} catch (NumberFormatException e) {
System.out.println("Invalid input. Please enter a number or 'x' to exit.");
}
}
scanner.close();
}
/**
* Converts an integer to a Roman numeral.
* @param num The number to convert.
* @return The Roman numeral as a String.
*/
public String convertToRoman(int num) {
String[] romanNumerals = {"I", "IV", "V", "IX", "X", "XL", "L", "XC"};
int[] values = {1, 4, 5, 9, 10, 40, 50, 90};
StringBuilder roman = new StringBuilder();
for (int i = values.length - 1; i >= 0; i--) {
while (num >= values[i]) {
num -= values[i];
roman.append(romanNumerals[i]);
}
}
return roman.toString();
}
}
# Explanations
이번 포스트에서는 사용자가 숫자를 입력했을 때 로마 숫자로 바뀌어서 출력이 되도록 하는 예제코드이다. 이번 예제코드에서 각 조건문이나 반복문들이 어떤 식으로 사용되고 있는지를 살펴볼 수 있다. 특히 do while문을 사용해서 90보다 큰 숫자를 입력할 경우 로마 숫자로 변환할 수 있는 범위에서 벗어났다고 설정해 주어 사용자가 다시 숫자를 입력할 수 있게끔 만들어주는 부분을 통해 while문과 do while문의 차이를 살펴볼 수 있다. 또한 try를 비롯하여 for, if statement와 같이 다양한 조건문들이 사용되고 있기 때문에 각각의 조건문들을 비교하고 대체하여 사용이 가능한 것도 예제코드 1과 2를 통해서 비교해 볼 수 있다.
예제코드 1과 2의 코드 작성 자체에도 차이가 있지만 예제코드 2의 경우 사용자가 계속 입력할 수 있도록 while문을 추가로 사용하였으며 'x'를 입력하면 프로그램이 종료되게끔 설정되어 있다.
728x90
'Programming Languages > Java' 카테고리의 다른 글
[Java Examples] Array Lists, 어레이 리스트 예제코드 및 설명 (2) | 2024.02.21 |
---|---|
[Java Examples] 다중 if문을 활용한 Troubleshooting 문제 해결 예제코드 및 설명 (0) | 2024.02.14 |
[Java Examples] 자바 어레이를 사용해서 오름차순으로 출력하기 (2) | 2024.02.14 |
[Java Examples] Method Overloading in Java (0) | 2024.02.12 |
[Java] 인텔리제이 다이어그램 메뉴가 안보일 때(IntelliJ UML Diagrams) (0) | 2024.02.11 |
댓글