I want to modify the below code to read the Polynomial Terms from a text file (vs. hard-coded values)

Furthermore, read data from text file in the format:

P1 = 3 5 1 -1 0 8

P2 = 5 6 2 -1 1 7 0 -4

etc...

Name the values P(x) and input the remaining data... Any advice?

import java.util.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.text.*;

public class PolynomialTest
{
   private Monomial head;
   private double TOLERANCE = 0.00000001;

 /*****   the  Monomial (inner) class      ********************************/

   private class Monomial
   {
      private DecimalFormat precision = new DecimalFormat("#.####");
      private int exp;                 // coeff * x^exp
      private double coeff;
      private Monomial next;

      public Monomial(int exp, double coeff, Monomial next)
      {
         this.exp = exp;
         this.coeff = coeff;
         this.next = next;
      }
      public String toString()
      {
         String form = precision.format(Math.abs(coeff));

         if(exp == 0) return form ;
         else
         if(exp == 1) return form + "*x";
         else
         return form +"*x^" + exp;
      }
      public boolean equals(Monomial mono)
      {
         return exp == mono.exp && coeff == mono.coeff;
      }

   }

   public PolynomialTest()
   {
      head = null;
   }

 /**
   *  Adds a new term into the polynomial, assuming that the polynomial
   *  is sorted in order from smallest to largest exponent.
   */
   public void addTerm(int exp, double coeff)
   {
      if( Math.abs(coeff) < TOLERANCE ) return;

      if( head == null || exp < head.exp )
      {
         head = new Monomial(exp, coeff, head);
         return;
      }

      Monomial cur = head;
      Monomial prev = null;

      while( cur != null && exp > cur.exp)
      {
         prev = cur;
         cur = cur.next;
      }
      if( cur == null || exp != cur.exp )
			prev.next = new Monomial(exp, coeff, cur);
      else
      {
         cur.coeff += coeff;
         if( Math.abs(cur.coeff) < TOLERANCE )
           if(prev != null)
               prev.next = cur.next;
            else
               head = head.next;
      }
   }

   public String toString()
   {
      StringBuffer sb = new StringBuffer();

      for(Monomial tmp = head; tmp != null; tmp = tmp.next)
        if(tmp.coeff < 0 )
           sb.append(" - " + tmp.toString());
        else
           sb.append(" + " + tmp.toString());

      return sb.toString();
   }

 /**
   *  Adds two polynomials
   *  The method does not change the original polynomial.
   */
   public PolynomialTest add(PolynomialTest poly)
   {
      PolynomialTest res = clone();

      for(Monomial tmp = poly.head; tmp != null; tmp = tmp.next)
         res.addTerm(tmp.exp, tmp.coeff);

      return res;
   }

   public PolynomialTest clone()
   {
      PolynomialTest res = new PolynomialTest();

      for(Monomial tmp = head; tmp != null; tmp = tmp.next)
         res.addTerm(tmp.exp, tmp.coeff);

      return res;
   }

   public boolean equals(PolynomialTest poly)
   {
      Monomial tmp1 = head;
      Monomial tmp2 = poly.head;

      while(tmp1 != null && tmp2 != null)
      {
         if( !tmp1.equals(tmp2) ) return false;
         tmp1 = tmp1.next;
         tmp2 = tmp2.next;
      }
      return true;
   }

 /**
   *  Multiplies by a number
   *  The method does not change the original polynomial.
   */
   public PolynomialTest multiply(double num)
   {
      PolynomialTest res = clone();

      for(Monomial tmp = res.head; tmp != null; tmp = tmp.next)
         tmp.coeff *= num;

      return res;
   }

 /**
   *  Returns a new polynomial that is the derivative of this polynomial.
   */
   public PolynomialTest diff()
   {
      PolynomialTest res = new PolynomialTest();

      for(Monomial tmp = head; tmp != null; tmp = tmp.next)
      {
         if(tmp.exp != 0)
            res.addTerm(tmp.exp - 1, tmp.coeff * tmp.exp );
      }

      return res;
   }

 /**
   *  Computes the polynomial at x = value
   */
   public double eval(double value)
   {
      double res = 0;

      for(Monomial tmp = head; tmp != null; tmp = tmp.next)
      {
         res += tmp.coeff * Math.pow(value, tmp.exp);
      }

      return res;
   }
   

	
   public static void main(String[] args)
   
   
   {
      PolynomialTest first = new PolynomialTest();
      PolynomialTest second = new PolynomialTest();

      System.out.println( "first" );
      first.addTerm(1, 2.1);
      first.addTerm(4, 2);
      first.addTerm(3, 1);
      first.addTerm(0, 1.3);
      first.addTerm(4, 0.3);
      System.out.println( first );
      System.out.println( );

      System.out.println( "second" );
      second.addTerm(4, -2.3);
      second.addTerm(2, 1);
      second.addTerm(0, -1.3);
      second.addTerm(1, 0.3);
      System.out.println( second );
      System.out.println( );

      System.out.println( "compare first with second" );
      System.out.println( first.equals(second) );
      System.out.println( "compare first wih first" );
      System.out.println( first.equals(first) );
      System.out.println( );

      System.out.println( "add first and second" );
      PolynomialTest third = first.add(second);
      System.out.println( third );
      System.out.println( first );
      System.out.println( second );
      System.out.println( );

      System.out.println( "multiply first by 0.2" );
      PolynomialTest fourth = first.multiply(0.2);
      System.out.println( fourth );
      System.out.println( first );
      System.out.println( );

      System.out.println( "differentiate first" );
      PolynomialTest diff = first.diff();
      System.out.println( diff );
      System.out.println( first );
      System.out.println( );

      System.out.println( "eval first at x = 1.5" );
      System.out.println( first.eval(1.5) );
      System.out.println( );

      String content = new String();
		String name = new String();
		File file = new File("test.txt");
		LinkedList<String> list = new LinkedList<String>();
		
		
		try {
			Scanner sc = new Scanner(new FileInputStream(file));
				while (sc.hasNext()) {
				name = sc.next();
				content = sc.nextLine();	
				list.add(content);
			    
								
			}
		
			sc.close();
		} catch (FileNotFoundException fnfe) {
			fnfe.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("\nProgram terminated Safely...");
		}

		
		Iterator<String> i = list.iterator();
		while (i.hasNext()) {
			System.out.println(name + i.next() + "\n");
			
		}
 
   }
}

ehm ... what are you having trouble with?
and no, I'm not going to read every single piece of code that is copied and pasted into this forum.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.