Hello everyone! I have just started an Intro to JAVA course and I already have an assignment due the 2nd class day. The assignment is to write a program that can convert an integer (from the user's input) to roman numerals. I'm having some problems with it because I don't know how to concatenate strings. I know I may be going at this all wrong, but I've only had about a week's time to figure this out. Here's what I have so far (in semi-pseudocode form): (M=1000, D=500, C=100, L=50, X=10, V=5, I=1)
String inputNumber= User's input romanNum= Roman Numeral string int number= inputNum converted to integer counterM, counterC, counterX= Counters If (number>=1000) //I'm thinking I may not need "If" statements While (number >= 1000) number -= 1000 counterM += 1 If (counterM >= 1) While (counterM >= 1) romanNum += "M" counterM -= 1 If (number >= 900) number -= 900 romanNum += "CM" If (number >= 500) number -= 500 romanNum += "D" etc, etc... As I stated earlier, I can't get the "M" to concatenate with the "CM", "D", etc. Can somebody please help. Thanks.
It looks like you are doing String concatenation correctly... += works fine with Strings... are you perhaps not initializing your romanNum value? romanNum = ""; will start you out with an empty String that you can add to...
If this doesn't help you out any, could you give more information on what exactly is happening?
-Nate
-Nate
Write once, run anywhere, because there's nowhere to hide! - /. A.C.
Michael Fitzmaurice
Ranch Hand
Joined: Aug 22, 2001
Posts: 168
posted
0
The way you are concatenating the characters into the String seems to be fine. The following approach is based on the way you had started to do it. It seems to work okay, although I haven't tested it extensively... <code> <pre> public class RomanNumeralConverter { private static final char ONE_THOUSAND = 'M'; private static final char FIVE_HUNDRED = 'D'; private static final char ONE_HUNDRED = 'C'; private static final char FIFTY = 'L'; private static final char TEN = 'X'; private static final char FIVE = 'V'; private static final char ONE = 'I';
public static void main(String[] args) { int intValue = Integer.parseInt(args[0]); int remainder = intValue; String numeralValue = "";
System.out.println(intValue + " IN ROMAN NUMERALS: " + numeralValue); } } </pre> </code> Hope this helps Michael ------------------ "One good thing about music - when it hits, you feel no pain" Bob Marley [This message has been edited by Michael Fitzmaurice (edited September 17, 2001).] [This message has been edited by Michael Fitzmaurice (edited September 17, 2001).]
"One good thing about music - when it hits, you feel no pain" <P>Bob Marley
gaine chung
Greenhorn
Joined: Sep 16, 2001
Posts: 6
posted
0
Thanks for the help guys! Nathan: As it turns out, I failed to initialize my string value: romanNum. I thought initializing was only for numbers. Silly me. Michael: That's a very interesting approach. Too bad I'm not experienced enough to go about it your way. In due time... Well, here's my final approach (for anyone who's interested). Again, thanks for the help. _________________________________ import javax.swing.JOptionPane; public class ConvertYear { public static void main(String args[]) { int year, showYear; String strYear, romanNum; romanNum = ""; strYear = JOptionPane.showInputDialog("Please type in a year"); year = Integer.parseInt(strYear); showYear = year; while (year >= 1000) { year -= 1000; romanNum += "M"; } if (year >= 900) { year -= 900; romanNum += "CM"; } if (year >= 500) { year -= 500; romanNum += "D"; } if (year >= 400) { year -= 400; romanNum += "CD"; } while (year >= 100) { year -= 100; romanNum += "C"; } if (year >= 90) { year -= 90; romanNum += "XC"; } if (year >= 50) { year -= 50; romanNum += "L"; } if (year >= 40) { year -= 40; romanNum += "XL"; } while (year >= 10) { year -= 10; romanNum += "X"; } if (year == 9) { year -= 9; romanNum += "IX"; } if (year >= 5) { year -= 5; romanNum += "V"; } if (year == 4) { year -= 4; romanNum += "IV"; } while (year >= 1) { year -=1; romanNum += "I"; } JOptionPane.showMessageDialog(null, "The Roman Numeral equivalent of " + showYear + " is " + romanNum); System.exit(0); } }
gaine chung
Greenhorn
Joined: Sep 16, 2001
Posts: 6
posted
0
PS: How do you post code that's formatted? I can't seem to indent any of my lines.