-1

Here is the code:

public String ToRoman(int number)
{

    if ((number < 1 || (number > 3999)))

        if (number >= 1000) return "M" + ToRoman(number - 1000);

        if (number >= 900) return "CM" + ToRoman(number - 900); 

        if (number >= 500) return "D" + ToRoman(number - 500);

        if (number >= 400) return "CD" + ToRoman(number - 400);

        if (number >= 100) return "C" + ToRoman(number - 100);            

        if (number >= 90) return "XC" + ToRoman(number - 90);

        if (number >= 50) return "L" + ToRoman(number - 50);

        if (number >= 40) return "XL" + ToRoman(number - 40);

        if (number >= 10) return "X" + ToRoman(number - 10);

        if (number >= 9) return "IX" + ToRoman(number - 9);

        if (number >= 5) return "V" + ToRoman(number - 5);

        if (number >= 4) return "IV" + ToRoman(number - 4);

        if (number >= 1) return "I" + ToRoman(number - 1);

    Scanner myKeyboard = new Scanner (System.in);
    System.out.println("Enter the integer: ");
    number = myKeyboard.nextInt();

    myKeyboard.close();


    }
}

The problem im having is that i get an error saying "The method must return a result type string".

John
  • 15,990
  • 10
  • 70
  • 110
user2840309
  • 1
  • 1
  • 1

1 Answers1

1

You need a helper function:

public String ToRomanWrapper()
{
    Scanner myKeyboard = new Scanner (System.in);
    System.out.println("Enter the integer: ");
    number = myKeyboard.nextInt();
    myKeyboard.close();
    return ToRoman(number);
}

public String ToRoman(int number){
    if ((number < 1 || (number > 3999)))
        return "INVALID"
    if (number >= 1000) return "M" + ToRoman(number - 1000);
    if (number >= 900) return "CM" + ToRoman(number - 900); 
    if (number >= 500) return "D" + ToRoman(number - 500);
    if (number >= 400) return "CD" + ToRoman(number - 400);
    if (number >= 100) return "C" + ToRoman(number - 100);            
    if (number >= 90) return "XC" + ToRoman(number - 90);
    if (number >= 50) return "L" + ToRoman(number - 50);
    if (number >= 40) return "XL" + ToRoman(number - 40);
    if (number >= 10) return "X" + ToRoman(number - 10);
    if (number >= 9) return "IX" + ToRoman(number - 9);
    if (number >= 5) return "V" + ToRoman(number - 5);
    if (number >= 4) return "IV" + ToRoman(number - 4);
    if (number >= 1) return "I" + ToRoman(number - 1);
    return "INVALID"
}

Alternatively, if you cannot define new functions, you can do this in the same function:

public String ToRoman(int number)
{                                                                                                         
    if ((number < 1 || (number > 3999)))
    {                           
        Scanner myKeyboard = new Scanner (System.in);
        System.out.println("Enter the integer: ");
        number = myKeyboard.nextInt();
        myKeyboard.close();     
        return ToRoman(number); 
    }                           
    else if (number >= 1000) return "M" + ToRoman(number - 1000);
    else if (number >= 900) return "CM" + ToRoman(number - 900); 
    else if (number >= 500) return "D" + ToRoman(number - 500);
    else if (number >= 400) return "CD" + ToRoman(number - 400);
    else if (number >= 100) return "C" + ToRoman(number - 100);            
    else if (number >= 90) return "XC" + ToRoman(number - 90);
    else if (number >= 50) return "L" + ToRoman(number - 50);
    else if (number >= 40) return "XL" + ToRoman(number - 40);
    else if (number >= 10) return "X" + ToRoman(number - 10);
    else if (number >= 9) return "IX" + ToRoman(number - 9);
    else if (number >= 5) return "V" + ToRoman(number - 5);
    else if (number >= 4) return "IV" + ToRoman(number - 4);
    else if (number >= 1) return "I" + ToRoman(number - 1);
}

I'm not sure why you'd want to do this though. Reading the input in the same function that handles the input would be really nasty.

Matt Bryant
  • 4,841
  • 4
  • 31
  • 46
  • Okay I'm starting to see why this wasn't working, it's just now my scanner is saying that it cannot be resolved to a type. Thank you for your time and help by the way. – user2840309 Oct 02 '13 at 22:14