算法学习笔记(roman&integer)

xiaoxiao2021-02-28  97

整数转罗马字

package www.algorithm.integerandroman; import java.util.Scanner; public class InttoRoman { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc=new Scanner(System.in); System.out.println("please input a number within the range from 1 to 3999"); int number=sc.nextInt(); System.out.print(IntToRoman(number)); } public static String IntToRoman(int num){ String[] romanpart={"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"}; int[] numpart={1000,900,500,400,100,90,50,40,10,9,5,4,1}; String roman=""; int i=0; while(num!=0&&num<=3999){ if(num>=numpart[i]){ num-=numpart[i]; roman+=romanpart[i]; }else i++; } return roman; } }

罗马字转整数

package www.algorithm.integerandroman; import java.util.Scanner; public class RomanToInteger { public static void main(String[] args){ System.out.println("please input the roman:"); Scanner sc=new Scanner(System.in); String roman=sc.next(); try { System.out.println(getNum(roman)); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } private static int getNum(String roman) throws Exception{ int num=0; int lastpart=0; for(int i=0;i<roman.length();i++){ int thispart=getIntOfRomanPart(roman.charAt(i)); if(thispart>lastpart) num=num+thispart-2*lastpart; else num+=thispart; lastpart=thispart; } return num; } private static int getIntOfRomanPart(char romanpart) throws Exception{ int part=0; switch(romanpart){ case 'I':part=1;break; case 'V':part=5;break; case 'X':part=10;break; case 'L':part=50;break; case 'C':part=100;break; case 'D':part=500;break; case 'M':part=1000;break; default : throw new Exception("罗马字不合法"); } return part; } }

转载请注明原文地址: https://www.6miu.com/read-42349.html

最新回复(0)