2013-11-26 4 views
2

Это метод toString для форматирования терминов полинома и добавления их в String. Его конечный результат - это что-то вроде «+ 2x^2 + 2x + 1». Как я могу удалить первый знак плюса? Благодаряметод toString для многочленов

//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 
     } 
+0

Не ставьте его там в первую очередь. – EJP

+0

Это намного сложнее, чем устранение проблемы с fencepost после факта, за исключением редких случаев (например, при рекурсивном просмотре списка и его печати на консоли или некоторых таких). –

+0

@BigEndian Я не согласен. Не сделать ошибку намного проще, чем исправить ее после того, как вы ее сделали. – EJP

ответ

3

прямо перед оператором возврата, используйте метод подстроки:

output = output.substring(2); 

Это дает вам все символы из индекса 2 до конца. http://docs.oracle.com/javase/7/docs/api/java/lang/String.html

Проблема, с которой вы сталкиваетесь, обычно называется проблемой fencepost или ошибкой по отдельности. http://en.wikipedia.org/wiki/Off-by-one_error

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