Как и зачем реализовывать статический метод intValue - римское преобразование цифр

Я сообщаю вам вопрос моего учителя:

Реализуйте метод статической утилиты intValue и повторно используйте код, который вы используете в методе экземпляра.

// TODO implement this
        public static int intValue(String roman) {

            return 0;
        }

Я не понимаю лучше, почему мне нужно использовать статический метод и почему мне нужно повторно использовать код, что я думаю, что это так:

public int intValue ()  {
        int decimal = 0;
        int lastNumber = 0;
        number = number.toUpperCase();
        for (int x = number.length() - 1; x >= 0; x--) {
            char convertNumber = number.charAt(x);
            switch (convertNumber) {
            case 'M':
                decimal = processDecimal(1000, lastNumber, decimal);
                lastNumber = 1000;
                break;
            case 'D':
                decimal = processDecimal(500, lastNumber, decimal);
                lastNumber = 500;
                break;
            case 'C':
                decimal = processDecimal(100, lastNumber, decimal);
                lastNumber = 100;
                break;
            case 'L':
                decimal = processDecimal(50, lastNumber, decimal);
                lastNumber = 50;
                break;
            case 'X':
                decimal = processDecimal(10, lastNumber, decimal);
                lastNumber = 10;
                break;
            case 'V':
                decimal = processDecimal(5, lastNumber, decimal);
                lastNumber = 5;
                break;
            case 'I':
                decimal = processDecimal(1, lastNumber, decimal);
                lastNumber = 1;
                break;
            }   
        }
        return decimal;

Может ли кто-нибудь объяснить мне? Спасибо

2 ответа

Ваш учитель хочет, чтобы вы удалили строку return 0; и напишите, каким должно быть тело метода:

    public static int intValue(String roman) {

        //write code here that returns an int based on a Roman numeral String like "MVCXIII"
    }

Мне очень жаль, если я допустил ошибки при правильной работе сайта.

Я переместил весь метод реализации public int intValue() в приватную статическую int int intValue(String roman) и реорганизовал метод public int intValue(). Я думаю, что это может быть средством запроса моего учителя; предварительное решение заключается в следующем:

    public static int intValue (String roman){
        int decimal = 0;
        int lastNumber = 0;
        roman = roman.toUpperCase();
        for (int x = roman.length() - 1; x >= 0; x--) {
            char convertNumber = roman.charAt(x);       
            switch (convertNumber) {
            case 'M':
                decimal = processDecimal(1000, lastNumber, decimal);
                lastNumber = 1000;
                break;
            case 'D':
                decimal = processDecimal(500, lastNumber, decimal);
                lastNumber = 500;
                break;
            case 'C':
                decimal = processDecimal(100, lastNumber, decimal);
                lastNumber = 100;
                break;
            case 'L':
                decimal = processDecimal(50, lastNumber, decimal);
                lastNumber = 50;
                break;
            case 'X':
                decimal = processDecimal(10, lastNumber, decimal);
                lastNumber = 10;
                break;
            case 'V':
                decimal = processDecimal(5, lastNumber, decimal);
                lastNumber = 5;
                break;
            case 'I':
                decimal = processDecimal(1, lastNumber, decimal);

                lastNumber = 1;
                break;
            }
        }
        return decimal;     
    }

    public int intValue()  {

        int rn = this.intValue();
        return rn;  
    }
Другие вопросы по тегам