2016-08-17 10 views
-1

докладываю вам вопрос моего учителя:Как и почему реализовать статический метод 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; 

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

+0

Ответ на вопрос «Почему», вероятно: потому что учитель сказал вам. Что до остальных, какова ваша точная проблема? что вы пробовали делать, где вы провалились, какие ошибки вы получили, ...? – UnholySheep

+0

Почему вы хотите иметь «статический класс»? В задании предлагается применить статический метод. Это метод класса, который имеет ключевое слово 'static' (как видно из вашего первого опубликованного кода). И при повторном использовании кода я уверен, что ваш учитель имел в виду, что вы вызываете метод экземпляра (а не копируете пасту). Я чувствую, что вы должны задавать своим учителям такие вопросы, поскольку он является тем, кто создал это задание, и может отвечать на них лучше, чем кто-либо на форуме или на веб-сайте. Также что такое «статический заголовок» в Java? – UnholySheep

+0

@UnholySheep: yes Я сказал ошибку: \t Моя конкретная проблема заключается в том, как сделать статический метод? Как повторно использовать этот код, мне нужно скопировать и вставить в статический заголовок закрывается скобкой? следующим образом: public static int intValue (String roman) { // внутри здесь return 0; } – InExperience

ответ

0

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

public static int intValue(String roman) { 

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

Да, это нормально, но что мне нужно, чтобы положить внутрь. Почему он сказал, что я могу повторно использовать код? – InExperience

+0

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

0

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

Я переместил весь метод реализации public int intValue() в private static 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; 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^