Reputation: 31
I am having trouble with a programming assignment for computer science class. The program is to add to roman numerals. I don't know how to get started with the code that actually adds the roman numbers together and outputs the sum of the two numbers: here is the code that i have so far for the main program:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
/**
* Class RomanNumeralCalculator - write a description of the class here
*
* @author (your name)
* @version (a version number)
*/
public class RomanNumeralCalculator extends JFrame
{
public static JPanel panel1, panel2, panel3, panel4;
public static JLabel main1, main2, label1, label2,label3,label4,image;
public static JTextField number1, number2;
public static JTextArea output;
public static JButton calculate,exit;
public static String input="Enter";
public static int position;
String num="";
public RomanNumeralCalculator()
{
super ("Roman Numeral Calculator");
setSize(1045,740);
setLocation(0,0);
Container container = getContentPane();
container.setBackground(Color.GREEN);
JLabel image=new JLabel(new ImageIcon("romanNumerals.jpg"));
panel1=new JPanel();
panel2=new JPanel();
panel3=new JPanel();
panel4=new JPanel();
panel1.setLayout(new GridLayout(2,7));
panel1.setBackground(Color.GREEN);
panel2.setLayout(new FlowLayout());
panel2.setBackground(Color.MAGENTA);
panel3.setLayout(new FlowLayout());
panel3.setBackground(Color.YELLOW);
panel4.setLayout(new FlowLayout());
panel4.setBackground(Color.GRAY);
JLabel main1=new JLabel("Welcome To The Roman Numerals Calculator");
JLabel main2=new JLabel("BY: Harpreet Singh, Date: 31/10/2013");
label3=new JLabel("Here are the following numbers that can be used in the calculator:");
label4=new JLabel("I=1 , V=5 , X=10 , L=50 , C=100 , D=500 , M=1000");
calculate=new JButton("Calculate");
exit=new JButton("Exit");
ButtonHandler handler = new ButtonHandler();
calculate.addActionListener(handler);
exit.addActionListener(handler);
label1=new JLabel("Enter first number in roman numerals:");
number1=new JTextField("",10);
label2=new JLabel("Enter second number in roman numerals:");
number2=new JTextField("",10);
output=new JTextArea(10,100);
output.setEditable(false);
container.setLayout(new BorderLayout());
container.add(panel1, BorderLayout.NORTH);
container.add(panel2, BorderLayout.CENTER);
container.add(panel3, BorderLayout.SOUTH);
panel1.add(main1);
panel1.add(main2);
panel1.add(image);
panel2.add(label3);
panel2.add(label4);
panel3.add(label1);
panel3.add(number1);
panel3.add(label2);
panel3.add(number2);
panel3.add(calculate);
panel3.add(exit);
setVisible(true);
}
public class ButtonHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if (e.getSource()==calculate)
{
String num1=number1.getText();
String num2=number2.getText();
CalculateNumbers x=new CalculateNumbers();
x.calculations(num1,num2);
}
else if (e.getSource()==exit)
{
System.exit(0);
}
}
}
public static void main (String args[])
{
/*String choice=JOptionPane.showInputDialog(null, "Please Type In 'Enter' to Continue: ", "Enter", JOptionPane.PLAIN_MESSAGE);
if ((choice == null) || ((choice != null) && !(choice.equalsIgnoreCase(input))))
{
JOptionPane.showMessageDialog(null, "Invalid Password. Please Try Again.");
System.exit(0);
}*/
//else
//{
//JOptionPane.showMessageDialog(null, "Correct Password");
RomanNumeralCalculator application = new RomanNumeralCalculator();
//}
}
}
Upvotes: 1
Views: 3533
Reputation: 1
import java.util.Scanner;
public class Roman {
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
System.out.print("Enter a Roman Number:> ");
char[] roman = stdIn.nextLine().toCharArray();
int total = 0;
for(int i = roman.length-1; i > -1; i--){
switch(roman[i]){
case 'I':
total += value(roman[i]); break;
case 'V':
case 'X':
case 'L':
case 'C':
case 'D':
case 'M':
if(i != 0 && (value(roman[i-1]) < value(roman[i]))){
total += value(roman[i]) - value(roman[i-1]);
i--;
}else{
total += value(roman[i]);
}
break;
}
}
System.out.println(total);
}
public static int value(char c){
switch(c){
case 'I':
return 1;
case 'V':
return 5;
case 'X':
return 10;
case 'L':
return 50;
case 'C':
return 100;
case 'D':
return 500;
case 'M':
return 1000;
default:
return 0;
}
} }
Upvotes: 0
Reputation: 863
Create a roman number class that will convert your number given a decimal number and vise versa. You can even make it static if you want.
This will make your code look nicer and more object oriented.
There is an algorithm explained here.
Upvotes: 0
Reputation: 5531
first write two methods
when ever user provide input in roman number convert them to regular number perform arithmetic operation and finally convert the result to roman number
Also check Converting Roman Numerals To Decimal and Convert Int to Roman Numeral
Upvotes: 4