Lập trình Java - Viết chương trình nhập các hệ số của đa thức P

Viết chương trình nhập các hệ số của đa thức P bậc n (0<n<20). Thực hiện các chức năng sau:

Tính giá trị của đa thức P theo công thức Horner:

  1.   P(x)=((((anx+ an-1)x+ an-2... + a1)x+ a0
  2. Tính đạo hàm của đa thức P. In ra các hệ số của đa thức kết quả.
  3. Nhập thêm đa thức Q bậc m. Tính tổng hai đa thức P và Q.  

Mã nguồn chương trình:

import java.util.Scanner;
public class Bai25 {
    public static int nhap(){
        Scanner input= new Scanner(System.in);
        boolean check= false;
        int n=0;
        while(!check){
            
            try{
                n= input.nextInt();
                check= true;
            }catch(Exception e){
                System.out.println("Ban phai nhap so! hay nhap lai...");
                input.nextLine();
            }
        }
        return (n);
    }
    
    public static void horner(int a[], int n){
        int T=0,i,x;
        System.out.println("\n Nhap x= ");
        x= nhap();
        T= a[n];
        for(i=n ; i>0 ; i--){
            T= T*x + a[i-1];
        }
        System.out.println("Gia tri cua da thuc tinh theo cong thuc Horner la: "+T);
    }
    
    public static void inDaThuc(int a[], int n){
        int i;
        for(i=n ; i>0 ; i--){
                System.out.print(" "+a[i]+".x^"+i+" + ");
        }
        System.out.print(" "+a[0]);
    }
    public static void daoHam(int a[],int dh[], int n){
        int i;
        for(i=n ; i>0 ; i--){
            dh[i-1]= a[i]*i;
        }
        inDaThuc(dh,n-1);
    }
    public static void tongDaThuc(int a[], int n, int b[], int m){
        int i;
        System.out.println("\n Tong cua 2 da thuc A va B la: ");
        if(n>m){
            for(i=m ; i>=0 ; i--){
                a[i]+=b[i];
            }
            inDaThuc(a,n);
        }
        else
            for(i=n ; i>=0 ; i--){
                b[i]+=a[i];
            }
            inDaThuc(b,m);
    }	
    
    public static void main(String[] args) {
        int i;
        Scanner input= new Scanner(System.in);
        System.out.println("Nhap bac cua da thuc n= ");
        int n= nhap();        
        int[] array= new int[n+1];
        for(i=n;  i>=0 ; i--){
             System.out.println("Nhap he so cua x^"+i+" = ");
            array[i]= nhap();
        }
        System.out.println("Da thuc A nhap vao la: ");
        inDaThuc(array, n);
        horner(array, n);
        //Tinh dao ham bac 1
        int[] dh= new int[n+1];
        daoHam(array,dh,n);
        //Tinh tong 2 da thuc
        System.out.println("\n Nhap bac cua da thuc m= ");
        int m= nhap();
        int[] array2= new int[m+1];
        for(i=m-1 ; i>=0 ; i--){
            System.out.println("Nhap he so cua x^"+i+" = ");
            array2[i]= input.nextInt();
        }
        System.out.println("Da thuc B nhap vao la: ");
        inDaThuc(array2, m);
        tongDaThuc(array, n, array2, m);
    }

}

Kết quả:

Nhap bac cua da thuc n= 
3
Nhap he so cua x^3 = 
2
Nhap he so cua x^2 = 
3
Nhap he so cua x^1 = 
1
Nhap he so cua x^0 = 
4
Da thuc A nhap vao la: 
 2.x^3 +  3.x^2 +  1.x^1 +  4
 Nhap x= 
2
Gia tri cua da thuc tinh theo cong thuc Horner la: 34
 6.x^2 +  6.x^1 +  1
 Nhap bac cua da thuc m= 
2
Nhap he so cua x^1 = 
3
Nhap he so cua x^0 = 
1
Da thuc B nhap vao la: 
 0.x^2 +  3.x^1 +  1
 Tong cua 2 da thuc A va B la: 
 2.x^3 +  3.x^2 +  4.x^1 +  5 0.x^2 +  3.x^1 +  1