/*다항식의 차 subPoly()와 다항식의 곱 multyPoly() 
 * 메소드를 OperatePoly 클래스에 추가하였습니다.*/

public class poly { 
        
   public static void main(String args[]) { 
           
      float a[] = new float[] {1, 3, 4, 3, 5, 3}; 
      float b[] = new float[] {2, 1, 3, 1, 0, 5, 6}; 
      
      int size_a, size_b; 
      
      size_a = 5; //size_a = a.length;
      size_b = 6; //size_b = b.length; 
      
    
      Polynomial A = new Polynomial(size_a, a); 
      Polynomial B = new Polynomial(size_b, b); 
      
      OperatePoly optPoly = new OperatePoly(); 
      
      Polynomial C = optPoly.addPoly(A, B); 
      Polynomial D = optPoly.subPoly(A, B); 
      Polynomial E = optPoly.multyPoly(A, B); 
      
      System.out.printf("첫번째 다항식 - A(x) = "); A.printPoly(); 
      System.out.printf("두번째 다항식 - B(x) = "); B.printPoly(); 
      System.out.printf("두 다항식의 합 - C(x) = "); C.printPoly(); 
      System.out.printf("두 다항식의 차 - D(x) = "); D.printPoly(); 
      System.out.printf("두 다항식의 곱 - E(x) = "); E.printPoly(); 
   } 

class Polynomial{ 
        
   private int degree; 
   private float coef[] = new float[20]; 
   Polynomial (int degree, float coef[]) { 
           
      this.degree = degree; 
      this.coef = coef; 
   } 
   
   Polynomial (int degree) { 
      this.degree = degree; 
      for (int i=0; i<=degree; i++) { 
         this.coef[i] = 0; 
      } 
   } 
   public int getDegree() { 
      return this.degree; 
   } 
   public float getCoef(int i) { 
      return this.coef[i]; 
   } 
   public float setCoef(int i, float coef) { 
      return this.coef[i] = coef; 
   } 
   public void printPoly() { 
      int temp = this.degree; 
      for (int i=0; i <= this.degree; i++) { 
         if (this.coef[i] >= 0) 
         System.out.printf("%3.0fx^%d", this.coef[i], temp--); 
         else if (this.coef[i] < 0) 
         System.out.printf("(%3.0f)x^%d", this.coef[i], temp--); 
         if (i != this.degree) { 
            System.out.printf(" +"); 
         } 
      } 
      System.out.println(); 
   } 
class OperatePoly { 
   private int degree_A = 0, degree_B = 0, degree_C = 0; 
   private int index_A = 0, index_B = 0, index_C = 0; 
   private int expo_A, expo_B; 
   //private float coef_A, coef_B, coef_C; 
   
   
   
   
   /* 덧셈메소드 */
   public Polynomial addPoly(Polynomial A , Polynomial B) { 
      degree_A = A.getDegree(); 
      degree_B = B.getDegree(); 
      index_A = 0; index_B = 0; index_C = 0; 
      expo_A = degree_A; 
      expo_B = degree_B; 
      if (degree_A >= degree_B) 
      degree_C = degree_A; 
      else 
      degree_C = degree_B; 
      Polynomial C = new Polynomial(degree_C); 
      while(index_A <= degree_A && index_B <= degree_B) { 
         if (expo_A > expo_B) { 
            C.setCoef(index_C++, A.getCoef(index_A++)); 
            expo_A--; 
            } else if (expo_A == expo_B){ 
            C.setCoef(index_C++, A.getCoef(index_A++)+B.getCoef(index_B++)); 
            expo_A--; 
            expo_B--; 
            } else { 
            C.setCoef(index_C++, B.getCoef(index_B++)); 
            expo_B--; 
         } 
      } 
      return C; 
   } 
   
   /* 뺼셈 멧소드*/
   public Polynomial subPoly(Polynomial A , Polynomial B) { 
      degree_A = A.getDegree(); 
      degree_B = B.getDegree(); 
      index_A = 0; index_B = 0; index_C = 0; 
      expo_A = degree_A; 
      expo_B = degree_B; 
      if (degree_A >= degree_B) 
      degree_C = degree_A; 
      else 
      degree_C = degree_B; 
      Polynomial C = new Polynomial(degree_C); 
      while(index_A <= degree_A && index_B <= degree_B) { 
         if (expo_A > expo_B) { 
            C.setCoef(index_C++, A.getCoef(index_A++)); 
            expo_A--; 
            } else if (expo_A == expo_B){     
            C.setCoef(index_C++, A.getCoef(index_A++)-B.getCoef(index_B++)); 
            expo_A--; 
            expo_B--; 
            } else { 
            C.setCoef(index_C++, B.getCoef(index_B++)); 
            expo_B--; 
         } 
      } 
      return C; 
   } 
   
   /*곱셈 메소드*/
   public Polynomial multyPoly(Polynomial A , Polynomial B) { 
      degree_A = A.getDegree(); 
      degree_B = B.getDegree(); 
      index_A = 0; index_B = 0; index_C = 0; 
      expo_A = degree_A; 
      expo_B = degree_B; 
      if (degree_A >= degree_B) 
      degree_C = degree_A; 
      else 
      degree_C = degree_B; 
      Polynomial C = new Polynomial(degree_C); 
      while(index_A <= degree_A && index_B <= degree_B) { 
         if (expo_A > expo_B) { 
            C.setCoef(index_C++, A.getCoef(index_A++)); 
            expo_A--; 
            } else if (expo_A == expo_B){     
            C.setCoef(index_C++, A.getCoef(index_A++)*B.getCoef(index_B++)); 
            expo_A--; 
            expo_B--; 
            } else { 
            C.setCoef(index_C++, B.getCoef(index_B++)); 
            expo_B--; 
         } 
      } 
      return C; 
   } 



자바로 다항식 계산하는 소스인데요..

중간에 


class Polynomial{ 
        
   private int degree; 
   private float coef[] = new float[20]; 
   Polynomial (int degree, float coef[]) { 
           
      this.degree = degree; 
      this.coef = coef; 
   } 
   
   Polynomial (int degree) { 
      this.degree = degree; 
      for (int i=0; i<=degree; i++) { 
         this.coef[i] = 0; 
      } 
   } 
   public int getDegree() { 
      return this.degree; 
   } 
   public float getCoef(int i) { 
      return this.coef[i]; 
   } 
   public float setCoef(int i, float coef) { 
      return this.coef[i] = coef; 
   } 
   public void printPoly() { 
      int temp = this.degree; 
      for (int i=0; i <= this.degree; i++) { 
         if (this.coef[i] >= 0) 
         System.out.printf("%3.0fx^%d", this.coef[i], temp--); 
         else if (this.coef[i] < 0) 
         System.out.printf("(%3.0f)x^%d", this.coef[i], temp--); 
         if (i != this.degree) { 
            System.out.printf(" +"); 
         } 
      } 
      System.out.println(); 
   } 
class OperatePoly { 
   private int degree_A = 0, degree_B = 0, degree_C = 0; 
   private int index_A = 0, index_B = 0, index_C = 0; 
   private int expo_A, expo_B; 
   //private float coef_A, coef_B, coef_C;



요 부분이 잘 이해가 안됩니다 ㅠㅠ
주석이나 간단한 설명 부탁드려도 될까요,,?
ㅠㅠ 확실히 여자는 이공계는 안되나보네요 ㅠ