Question

This is a toString method for formatting the terms of a polynomial and adding them to a String. Its final output is something like "+ 2x^2 + 2x + 1" How would I go about removing the first plus sign? Thanks

//toString method for returning ReesePolynomials in polynomaial format(for ReeseClient)
       public String toString()
       {
          String output = "";
          //the following are situations for formatting the output of each term and adding them to String output
          for (int i = 0; i < TermLength; i++)  // For the number of terms stated by the user earlier, values will be given for each ReeseTerm in the poly array
             {  
                if (poly[i].getExpo() == 0 && poly[i].getCoeff() > 0)       
                {
                   output += " + " + poly[i].getCoeff();
                }

                else if (poly[i].getExpo() == 0 && poly[i].getCoeff() < 0)
                {
                   output += " " + poly[i].getCoeff();
                }

                else if (poly[i].getCoeff() == 1 && (poly[i].getExpo() != 0 && poly[i].getExpo() != 1))
                {
                   output += " + x^" + poly[i].getExpo();   
                }

                else if (poly[i].getCoeff() == 1 && (poly[i].getExpo() == 1))
                {
                   output += " + x";    
                }

                else if (poly[i].getExpo() == 1 && poly[i].getCoeff() > 0)
                {
                   output += " + " + poly[i].getCoeff() + "x";
                }

                else if (poly[i].getExpo() == 1 && poly[i].getCoeff() < 0)
                {
                   output += " " + poly[i].getCoeff() + "x";
                }

                else if (poly[i].getCoeff() < 0 && (poly[i].getExpo() > 1 || poly[i].getExpo() < -1))
                {
                   output += " " + poly[i].getCoeff() + "x^" + poly[i].getExpo();
                }

                else if (poly[i].getCoeff() == 0)
                {}

                else
                {
                   output += " + " + poly[i].getCoeff() + "x^" + poly[i].getExpo();
                }

             }

       return output;       // the final string output is returned to be printed when called upon in main
       }
Was it helpful?

Solution

Right before your return statement, use the substring method:

output = output.substring(2);

This gives you all characters from index 2 to end. http://docs.oracle.com/javase/7/docs/api/java/lang/String.html

The problem you are facing is commonly called the fencepost problem, or off-by-one error. http://en.wikipedia.org/wiki/Off-by-one_error

OTHER TIPS

Try
output = output.subString(2);
return output;

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top