Java 将罗马数字转换为整数数字
罗马数字 - 基于古代罗马系统,使用符号来表示数字。这些数字被称为罗马数字。符号分别为I,V,X,L,C,D和M,代表1,5,10,50,100,500和1000。
整数数字 - 整数数字就是由正数、负数和零值组成的整数。分数不是整数。
在这里,我们根据它们的整数值设置了符号值。每当输入罗马数字时,我们将其分成单位,然后计算适当的罗马数字。
I - 1
II – 2
III – 3
IV – 4
V – 5
VI – 6
.
.
.
X – 10
XI – 11
.
.
XV - 15
在本文中,我们将看到如何在Java中将罗马数字转换为整数。
为了向您展示一些实例 –
实例1
Input Roman number is XIV.
Converting it to Integer = 14.
实例2
Input Roman number is CCXXXIV.
Converting it to Integer = 234.
实例3
Input Roman number is MCCXXXI.
Converting it to Integer = 1231.
步骤
步骤1 - 通过静态输入或用户输入将罗马数字作为字符串输入。
步骤2 - 在一个用户定义的方法中,我们声明了一些条件,其中包含了罗马数字及其相应的整数值。
步骤3 - 在另一个用户定义的方法中,通过使用给定字符串的索引值计算罗马数字的值。
步骤4 - 在获取整数后,将其作为输出打印出来。
多种方法
我们提供了不同的解决方案。
- 通过静态输入值的用户定义方法。
-
通过用户输入值的用户定义方法。
让我们逐个查看程序及其输出。
方法1:使用用户定义的方法和静态输入值
在这种方法中,我们通过静态输入方法声明一个罗马输入数字,并将该数字作为参数传递给用户定义的方法,然后在方法内部,使用算法将罗马数字转换为整数。
示例
import java.util.*;
import java.io.*;
import java.lang.Math;
public class Main {
public static void main(String args[]) {
Main obj = new Main();
String inputRoman= "LXVII";
System.out.println("The Integer value of given Roman number is: "+obj.romanToInt(inputRoman));
}
int NumValue(char rom) {
if (rom == 'I')
return 1;
if (rom == 'V')
return 5;
if (rom == 'X')
return 10;
if (rom == 'L')
return 50;
if (rom == 'C')
return 100;
if (rom == 'D')
return 500;
if (rom == 'M')
return 1000;
return -1;
}
int romanToInt(String str) {
int sum = 0;
for (int i=0; i<str.length(); i++) {
int s1 = NumValue(str.charAt(i));
if (i+1 <str.length()) {
int s2 = NumValue(str.charAt(i+1));
if (s1 >= s2) {
sum = sum + s1;
}
else{
sum = sum - s1;
}
}
else {
sum = sum + s1;
}
}
return sum;
}
}
输出
The Integer value of given Roman number is: 67
方法2:通过用户输入值
在这种方法中,我们通过用户输入的方法声明一个罗马数字,并将该数字作为参数传递给一个用户定义的方法,然后在方法内部,通过使用算法,将罗马数字转换为整数。
示例
import java.util.*;
import java.io.*;
import java.lang.Math;
public class Main {
public static void main(String args[]) {
Main obj = new Main();
Scanner sc = new Scanner(System.in);
System.out.print("Enter a Roman Number in capital letters: ");
String inputRoman= sc.nextLine();
System.out.println("The Integer value of given Roman number is:"+obj.romanToInt(inputRoman));
}
int NumValue(char rom){
if (rom == 'I')
return 1;
if (rom == 'V')
return 5;
if (rom == 'X')
return 10;
if (rom == 'L')
return 50;
if (rom == 'C')
return 100;
if (rom == 'D')
return 500;
if (rom == 'M')
return 1000;
return -1;
}
int romanToInt(String str) {
int sum = 0;
for (int i=0; i<str.length(); i++) {
int s1 = NumValue(str.charAt(i));
if (i+1 <str.length()) {
int s2 = NumValue(str.charAt(i+1));
if (s1 >= s2) {
sum = sum + s1;
}
else {
sum = sum - s1;
}
}
else {
sum = sum + s1;
}
}
return sum;
}
}
输出
Enter a Roman Number in capital letters: V
The Integer value of given Roman number is: 5
在本文中,我们探讨了如何使用不同的方法在Java中将罗马数字转换为整数。