Java – Zadania Testowe .Ciąg Dalszy

Praca – Ankiety,Testy Sprawdzające

webdesignKolejny zadanie to już Java. Treść jest następująca :D okonać implementacji zamiany cyfr zapisanych w systemie dziesiętnym , na cyfry zapisane w systemie rzymskim.

  • 1 – I;
  • 2 – II;
  • 3 – III;
  • 4 – IV;
  • itp, itd.

Treść tematu testu w języku angielskim

Implement a program which can take an integer and convert it into a Roman Numeral string.
e.g.

1 = “I”
5 = “V”
19 = “XIX”
101 = “CI”
The function should be capable of converting every number between 1 and 3999.

Przeliczanie wg. mnie wygląda tak:


public static String evaluate(int value)
   {
      StringBuffer ret = new StringBuffer();

value = doThousands(value, ret);
      value = doHundreds(value, ret);
      value = doTens(value, ret);
      doOnes(value, ret);

return ret.toString();
   }

private static int doThousands(int value, StringBuffer buff)
   {
      int ret = value;
      int subtract = 0;

while (value >= 900)
      {
         if(value >= 1000)
         {
            buff.append("M");
            subtract += 1000;
            value -= 1000;
         }
         else if(value >= 900)
         {
            buff.append("CM");
            subtract += 900;
            value -= 900;
         }
      }

return ret - subtract;
   }

private static int doHundreds(int value, StringBuffer buff)
   {
      int ret = value;
      int subtract = 0;

while (value >= 90)
      {
         if(value >= 500)
         {
            buff.append("D");
            subtract += 500;
            value -= 500;
         }
         else if(value >= 400)
         {
            buff.append("CD");
            subtract += 400;
            value -= 400;
         }
         else if(value >= 100)
         {
            buff.append("C");
            subtract += 100;
            value -= 100;
         }
         else if(value >= 90)
         {
            buff.append("XC");
            subtract += 90;
            value -= 90;
         }
      }

return ret - subtract;
   }

private static int doTens(int value, StringBuffer buff)
   {
      int ret = value;
      int subtract = 0;

while (value >= 9)
      {
         if(value >= 50)
         {
            buff.append("L");
            subtract += 50;
            value -= 50;
         }
         if(value >= 40)
         {
            buff.append("XL");
            subtract += 40;
            value -= 40;
         }
         else if(value >= 10)
         {
            buff.append("X");
            subtract += 10;
            value -= 10;
         }
         else if(value == 9)
         {
            buff.append("IX");
            subtract += 9;
            value -= 9;
         }
      }

return ret - subtract;
   }

private static void doOnes(int value, StringBuffer buff)
   {
      while (value > 0)
      {
         if(value >= 5)
         {
            buff.append("V");
            value -= 5;
         }
         else if(value == 4)
         {
            buff.append("IV");
            value -= 4;
         }
         else if(value < 4)
         {
            buff.append("I");
            value -= 1;
         }
      }
   }

 

Jednak okazuje się ,że w tym fragmencie mam błąd.

Napisz odpowiedź

Musisz się zalogować, aby móc dodać komentarz.