Not sure what to return from parseStringTo class
<p>I am trying to code a program that can take user input data about a carpet, parse the string into the necessary pieces of information and create carpet objects based off the shape.  My code is</p>

<pre><code>    public class CarpetParser{

    public static Carpet parseStringToCarpet(String lineToParse)
    {
        String delims = "[/]";
        String[] info = lineToParse.split(delims);
        if(info[0].equalsIgnoreCase("rectangle")){
            double priceFor = Double.parseDouble(info[2]);
            int height = Integer.parseInt(info[3]);
            int width = Integer.parseInt(info[4]);
            RectangleCarpet theCarpet = new RectangleCarpet(info[1], priceFor, height, width);
            return theCarpet;

        }else if(info[0].equalsIgnoreCase("circle")){
            double priceFor = Double.parseDouble(info[2]);
            int radius = Integer.parseInt(info[3]);
            CircleCarpet theCarpet = new CircleCarpet(info[1], priceFor, radius);
            return theCarpet;

        }

    }
}
</code></pre>

<p>for the parser,</p>

<pre><code>    public abstract class Carpet{

    protected int area = 0;
    protected double unitPrice = 0;
    protected double totalPrice = 0.0;
    protected String carpetID;

    public Carpet(String ID, double thisPrice){
        carpetID = ID;
        unitPrice = thisPrice;
    }

    public String getCarpetId(){
        return carpetID;
    }

    public String toString(){
        String carpet = new String("\n" + "The CarpetId:\t\t" + getCarpetId() + "\nThe Area:\t\t" + area + "\nThe Unit Price\t\t" + unitPrice + "\nThe Total Price\t" + totalPrice + "\n\n");
        return carpet;
    }

    public abstract void computeTotalPrice();

}
</code></pre>

<p>for the carpet,</p>

<pre><code>    public class RectangleCarpet extends Carpet{

    private int height;
    private int width;

    public RectangleCarpet(String ID, double priceOf, int h, int w){
        super(ID, priceOf);
        height = h;
        width = w;
        computeTotalPrice();
    }

    public void computeTotalPrice(){
        super.area = height * width;
        super.totalPrice = unitPrice * area;
    }

    public String toString(){
        String forThis = new String("\nThe Carpet Shape:\tRectangle\nThe Height:\t\t" + height + "\nThe Width:\t\t" + width +"\n");
        return forThis + super.toString();

    }

}
</code></pre>

<p>for one of the carpet shapes and</p>

<pre><code>    public class CircleCarpet extends Carpet{

    private int radius;

    public CircleCarpet(String ID, double priceOf, int rad){
        super(ID, priceOf);
        radius = rad;
        computeTotalPrice();

    }

    public void computeTotalPrice(){
        super.area = radius * radius * 3;
        super.totalPrice = area * unitPrice;
    }


    public String toString(){
        String forThis = new String("\nThe Carpet Shape:\tCircle\nThe radius:\t\t" + radius + "\n");
        return forThis + super.toString();
    }

}
</code></pre>

<p>for the other shape.  The problem is the <code>parseStringToCarpet</code> is missing a return value, and I can't figure out what it needs to return, because if I try to return <code>theCarpet</code> it says it is the wrong type.  </p>

<p>The calling class is </p>

<pre><code>`import java.io.*;         //to use InputStreamReader and BufferedReader
import java.util.*;       //to use ArrayList

public class Menu
 {
  public static void main (String[] args)
   {
     char input1;
     String inputInfo = new String();
     String line = new String();
     boolean found;

     // ArrayList object is used to store carpet objects
     ArrayList carpetList = new ArrayList();

     try
      {
       printMenu();     // print out menu

       // create a BufferedReader object to read input from a keyboard
       InputStreamReader isr = new InputStreamReader (System.in);
       BufferedReader stdin = new BufferedReader (isr);

       do
        {
         System.out.println("What action would you like to perform?");
         line = stdin.readLine().trim();
         input1 = line.charAt(0);
         input1 = Character.toUpperCase(input1);

         if (line.length() == 1)
          {
           switch (input1)
            {
             case 'A':   //Add Carpet
               System.out.print("Please enter a carpet information to add:\n");
               inputInfo = stdin.readLine().trim();
               carpetList.add(CarpetParser.parseStringToCarpet(inputInfo));
               break;
             case 'C':   //Compute Total Price For Each Carpet
               for (int i=0; i&lt;carpetList.size();i++)
                     ((Carpet) carpetList.get(i)).computeTotalPrice();
               System.out.print("total prices computed\n");
               break;
             case 'D':   //Search for Carpet
               System.out.print("Please enter a carpetID to search:\n");
               inputInfo = stdin.readLine().trim();
               found = false;
               for (int i=0; i&lt;carpetList.size();i++)
                {
                 if (inputInfo.equals(((Carpet)carpetList.get(i)).getCarpetId()))
                  {
                   found = true;
                  }
                }
                if (found == true)
                 System.out.print("carpet found\n");
                else
                 System.out.print("carpet not found\n");
               break;
             case 'L':   //List Carpets
               if (carpetList.isEmpty())
                System.out.print("no carpet\n");
               else
                for (int i=0; i &lt; carpetList.size(); i++)
                  System.out.print(carpetList.get(i).toString());
               break;
             case 'Q':   //Quit
               break;
             case '?':   //Display Menu
               printMenu();
               break;
             default:
               System.out.print("Unknown action\n");
               break;
            }
         }
        else
         {
           System.out.print("Unknown action\n");
          }
        } while (input1 != 'Q'); // stop the loop when Q is read
      }
     catch (IOException exception)
      {
        System.out.println("IO Exception");
      }
  }

  /** The method printMenu displays the menu to a use **/
  public static void printMenu()
   {
     System.out.print("Choice\t\tAction\n" +
                      "------\t\t------\n" +
                      "A\t\tAdd Carpet\n" +
                      "C\t\tCompute Total Price For Each Carpet\n" +
                      "D\t\tSearch for Carpet\n" +
                      "L\t\tList Carpets\n" +
                      "Q\t\tQuit\n" +
                      "?\t\tDisplay Help\n\n");
  }
}
</code></pre>

<p>` I'm not allowed to edit the code of the calling class.</p>
