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 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()
{
}

/**
*  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;

{
return;
}

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
}
}

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();
}

/**
*  The method does not change the original polynomial.
*/
{
PolynomialTest res = clone();

for(Monomial tmp = poly.head; tmp != null; tmp = tmp.next)

return res;
}

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

for(Monomial tmp = head; tmp != null; tmp = tmp.next)

return res;
}

public boolean equals(PolynomialTest poly)
{

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" );
System.out.println( first );
System.out.println( );

System.out.println( "second" );
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" );
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");

try {
Scanner sc = new Scanner(new FileInputStream(file));
while (sc.hasNext()) {
name = sc.next();
content = sc.nextLine();

}

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.