aspose file tools*
The moose likes Beginning Java and the fly likes Roman Numeral Program Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Reply locked New topic
Author

Roman Numeral Program

Frank White
Greenhorn

Joined: Mar 01, 2008
Posts: 7
I have a program that takes in a string of integers and converts them into roman numerals. This part of the program is complete; however, part 2 of this program is to take in a string of roman numerals and change them to integers. The problem is part2. When I input IIIII it comes out 5. It should read V=5 not IIIII=5. IIIII is not a roman numeral. Is anyone familiar with this problem?

Thank you...Frank White

This is the code I have it will compile and run if you cut and paste.

public class ArabicNumeral extends NumberStringEva {

ArabicNumeral(){
super("IVXLCDM");
} // end of constructor




private int romanValue(char cAry){

switch (cAry){
case 'M':
return 1000;
case 'D':
return 500;
case 'C':
return 100;
case 'L':
return 50;
case 'X':
return 10;
case 'V':
return 5;
case 'I':
return 1;


} // end of romanVlaue

// given a Roman character this method converts it to an integer
// For example Given I returns 1, X returns 10, etc

return -999;
} // end of romanVlaue


/////////////
// STUB ONLY ~ needs code and needs javadoc
/////////////

public String arabicNumeralString (String sTest){
int t;
int ans=0;
/// To upper case method put here See lec 5/
sTest=sTest.toUpperCase();
// What about mixed case?! :-)
t=evalTheString(sTest);
if (t < 0) {
System.out.println("\tArabicNumeral: sTest"+sTest+" is invalid Roman Numeral string");
return null;
}
else {
System.out.println("\tArabicNumeral: sTest"+sTest+" is valid Roman Numeral string");
char cAry[]=sTest.toCharArray();

for (int i=0;i<cAry.length;i++){
cAry[i]=(char)romanValue(cAry[i]);

}
for (int i=0;i<cAry.length;i++) {

if(i<cAry.length-1) {
if(cAry[i] >= cAry[i+1]){
//add to running total
ans= ans + cAry[i];
}
else{

ans= ans - cAry[i];
//sub to running total
}
}
else
ans=ans+cAry[i];
}




/* //1. convert sTest to char array cAry[] -- see Lec 4
char cAry[] = sTest.toCharArray();
// else look ahead to determine if you add or sub the running total (ans)



*/
// your code goes here...could call a private method or three...
//ans=9; // the hard-coded 9 is to allow it to compile...
//
return Integer.toString(ans);
}
} // end of arabicNumeralString


public String toString() {
return ("Arabic Numeral is using "+super.toString());
} // end of toString

} // end of ArabicNumeral
Campbell Ritchie
Sheriff

Joined: Oct 13, 2005
Posts: 38896
    
  23
Please don't post the same question twice.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Roman Numeral Program