как добавить римские цифры в java

У меня возникли проблемы с заданием по программированию для класса информатики. Программа для добавления к римским цифрам. Я не знаю, как начать работу с кодом, который на самом деле складывает римские числа и выводит сумму двух чисел: вот код, который у меня есть для основной программы:

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();
    //}
}

}


person help for ICS    schedule 05.11.2013    source источник
comment
Подсказка: сначала преобразуйте их в обычные числа.   -  person SLaks    schedule 05.11.2013
comment
Вам понадобятся две функции: одна принимает строку (римскую цифру) и возвращает число, а другая принимает число и возвращает строку (римскую цифру). Таким образом, вы берете свои два входа, передаете их своей первой функции для преобразования в числа, складываете их вместе, а затем передаете результат своей второй функции, чтобы получить результат в виде римской цифры.   -  person Anthony Grist    schedule 05.11.2013
comment
Используйте переключатель, карту или реализуйте синтаксический анализатор для преобразования чисел.   -  person Zong    schedule 05.11.2013
comment
как бы я это сделал, потому что мой основной способ ввода чисел - текстовое поле   -  person help for ICS    schedule 05.11.2013


Ответы (3)


сначала напишите два метода

  1. преобразовать римское число в обычное число
  2. преобразовать обычное число в римское число

когда пользователь вводит римские числа, преобразует их в обычные числа, выполняет арифметическую операцию и, наконец, преобразует результат в римские числа.

Также проверьте Преобразование римских цифр в десятичные числа и Преобразовать Int в римские цифры

person upog    schedule 05.11.2013
comment
я не могу использовать два метода вместо этого - person help for ICS; 05.11.2013
comment
Можете ли вы помочь мне начать работу с одним методом, потому что я новичок в java, а также не совсем понимаю, как бы я это сделал? - person help for ICS; 05.11.2013
comment
Я понял, что это будет большая задача, чтобы закончить. В ссылках, которыми я поделился, есть ответы и пояснения, пожалуйста, просмотрите их. - person upog; 05.11.2013
comment
не могли бы вы помочь мне преобразовать сумму, которая является целым числом, в эквивалентную ей римскую цифру - person help for ICS; 12.11.2013

Создайте класс римских чисел, который будет преобразовывать ваше число в десятичное число и наоборот. Вы даже можете сделать его статичным, если хотите.

Это сделает ваш код более привлекательным и более объектно-ориентированным.

Здесь описан алгоритм.

алгоритм римских чисел

person Montaldo    schedule 05.11.2013

person    schedule
comment
после компиляции, когда приходит сообщение «Введите римский номер», введите, например: M + V, и он добавит его - person scavy; 05.11.2013