add method in Polynomial has a single Term object as the parameter in java pleas
ID: 3655863 • Letter: A
Question
add method in Polynomial has a single Term object as the parameter in java please?
since its hard to readpastethe code inblueJ to read the full code.
import java.awt.*; //import libraries import java.awt.event.*; import javax.swing.*; import java.util.LinkedList; import java.util.StringTokenizer;
public class PolynomialGUI extends JFrame{
private JTextField JTextField("Enter one polynomial value" , 30);
private JTextField nextPolynomialField = new JTextField("Enter last polynomial value" , 30);
private JButton multiplyonePolynomialButton = new JButton("Multiply by");
private JButton multiplynextPolynomialButton = new JButton("Multiply by");
private JTextField JTextField(5); //4 textfield private JTextField nextPolynomialMultiplyField = new JTextField(5);
private JButton addDigitButton = new JButton("Add Polynomials"); //5 buttons private JButton closeButton = new JButton("CLOSE");
private JButton helpButton = new JButton("HELP");
public static void main(){
PolynomialGUI digit = new PolynomialGUI();
digit.setDefaultCloseOperation(EXIT_ON_CLOSE); digit.setTitle("Polynomials testing"); digit.buildGUI(); digit.setVisible(true); digit.setSize(540,200); } public void buildGUI(){ JPanel onePolyPanel, nextPolyPanel, controlPanel; Container window = getContentPane(); window.setLayout(new BoxLayout(window,BoxLayout.Y_AXIS)); multiplyonePolynomialButton.addActionListener(new MultiplyAction()); multiplynextPolynomialButton.addActionListener(new MultiplyAction()); addDigitButton.addActionListener(new AddDigitAction()); //create a separate class to use this helpButton.addActionListener(new HelpAction()); closeButton.addActionListener(new closeAction()); window.add(Box.createRigidArea(new Dimension(0,30))); JPanel(); onePolyPanel.setLayout(new BoxLayout(onePolyPanel,BoxLayout.X_AXIS)); //box shape layout onePolyPanel.add(Box.createRigidArea(new Dimension(10,0))); onePolynomialField.setMaximumSize(new Dimension(200,20)); onePolyPanel.add(onePolynomialField); //add first field to window pane onePolyPanel.add(Box.createRigidArea(new Dimension(20,0))); onePolyPanel.add(multiplyonePolynomialButton); //add button to window onePolynomialMultiplyField.setMaximumSize(new Dimension(60,20)); //mutiply field for first value onePolyPanel.add(Box.createRigidArea(new Dimension(5,0))); onePolyPanel.add(onePolynomialMultiplyField); onePolyPanel.add(Box.createHorizontalGlue()); window.add(onePolyPanel); window.add(Box.createRigidArea(new Dimension(0,10))); nextPolyPanel = new JPanel(); nextPolyPanel.setLayout(new BoxLayout(nextPolyPanel,BoxLayout.X_AXIS)); nextPolyPanel.add(Box.createRigidArea(new Dimension(10,0))); nextPolynomialField.setMaximumSize(new Dimension(200,20)); nextPolyPanel.add(nextPolynomialField); //add second field to the window nextPolyPanel.add(Box.createRigidArea(new Dimension(20,0))); nextPolyPanel.add(multiplynextPolynomialButton); nextPolynomialMultiplyField.setMaximumSize(new Dimension(60,20)); //multiply field for second value nextPolyPanel.add(Box.createRigidArea(new Dimension(5,0))); nextPolyPanel.add(nextPolynomialMultiplyField); nextPolyPanel.add(Box.createHorizontalGlue()); window.add(nextPolyPanel); window.add(Box.createRigidArea(new Dimension(0,40))); controlPanel = new JPanel(); controlPanel.setLayout(new BoxLayout(controlPanel,BoxLayout.X_AXIS)); controlPanel.add(Box.createRigidArea(new Dimension(10,0))); controlPanel.add(addDigitButton); //add both polynomials together controlPanel.add(Box.createHorizontalGlue()); controlPanel.add(Box.createRigidArea(new Dimension(60,0))); controlPanel.add(helpButton); controlPanel.add(Box.createRigidArea(new Dimension(15,0))); controlPanel.add(closeButton); controlPanel.add(Box.createRigidArea(new Dimension(10,0))); window.add(controlPanel); window.add(Box.createRigidArea(new Dimension(0,40))); window.add(Box.createVerticalGlue()); } private class MultiplyAction implements ActionListener { public void actionPerformed(ActionEvent event) { float coefficient; int exponent; Term term; Polynomial p1, p2; String s = new String(), token; if (event.getSource().equals(multiplyonePolynomialButton)) { //poly1 = new Polynomial(); s = onePolynomialField.getText(); } else if (event.getSource().equals(multiplynextPolynomialButton)) { //poly2 = new Polynomial(); s = nextPolynomialField.getText(); } StringTokenizer st = new StringTokenizer(s); try { /* // get polynomial while (st.hasMoreTokens()) { token = st.nextToken(); coefficient = Float.parseFloat(token); if (!st.hasMoreTokens()) { exponent = 0; } else if (!(st.nextToken().equals("x"))) { throw new Exception(); } else { token = st.nextToken(" + "); exponent = Integer.parseInt(token); } JOptionPane.showMessageDialog(null, "Term = " + coefficient + "x" + exponent); term = new Term(coefficient,exponent); if (event.getSource().equals(multiplyonePolynomialButton)) { poly1.add(term); } else if (event.getSource().equals(multiplynextPolynomialButton)) { newTerm.add(term); } */// } /* get the multiplication value from appropriat field, multiply & then display new polynomial * if (event.getSource().equals(multiplyFirstButton)) { * result = poly1.multiply(value); * result.display(); * } * else if (event.getSource().equals(multiplySecondButton)) { * result = poly2.multipoly(value); * result.display(); * } */ } catch (Exception e) { JOptionPane.showMessageDialog(null,"Invalid Polynomial","Error",JOptionPane.ERROR_MESSAGE); } } }
private class AddDigitAction implements ActionListener{
public void actionPerformed(ActionEvent event) {
float coefficient; int exponent;
Term term; Polynomial poly1, poly2;
String s = new String(), token;
if (event.getSource().equals(addDigitButton))
{ //poly1 = new Polynomial(); s = onePolynomialField.getText();
} else if (event.getSource().equals(addDigitButton)) { //poly2 = new Polynomial(); s = nextPolynomialField.getText(); } StringTokenizer st = new StringTokenizer(s); /*
try { // get polynomial while (st.hasMoreTokens())
{ token = st.nextToken(); coefficient = Float.parseFloat(token); if (!st.hasMoreTokens()) { exponent = 0; } else if (!(st.nextToken().equals("x"))) { throw new Exception(); } else { token = st.nextToken(" + "); exponent = Integer.parseInt(token); }
JOptionPane.showMessageDialog(null, "Term = " + coefficient + "x" + exponent); term = new Term(coefficient,exponent); if (event.getSource().equals(multiplyonePolynomialButton)) { poly1.add(Term); } else if (event.getSource().equals(multiplynextPolynomialButton)) { poly2.add(term); } } } catch (Exception e) {
JOptionPane.showMessageDialog(null,"Invalid Polynomial","Error",JOptionPane.ERROR_MESSAGE); */ } } private class HelpAction implements ActionListener { public void actionPerformed(ActionEvent event) { String s = new String (); s = "Enter Polyonomials as: 9 x 16 + 3.4 x 5 + 1.89 x 2 + 0.45 " + "There must be a space between all entries ";
JOptionPane.showMessageDialog(null, s, "How polynomials should be entered", JOptionPane.INFORMATION_MESSAGE); } } private class closeAction implements ActionListener { public void actionPerformed(ActionEvent event) { System.exit(0); } } }
Explanation / Answer
import java.io.DataInputStream; import java.util.LinkedList; import java.util.ListIterator; // A term contains the coefficient and the exponent of x. class Term { public Term(int c, int d) { coeff = c; degree = d; } public Term multiply(Term other) { return new Term(coeff * other.coeff, degree + other.degree); } public void add(int c) { coeff += c; } public void sub(int c) { coeff -= c; } public int getCoeff() { return coeff; } public int getDegree() { return degree; } private int coeff; private int degree; } // A polynomial made up of terms. class Polynomial { // Construct a Polynomial object. public Polynomial() { terms = new LinkedList(); } public Polynomial add(Polynomial p) { Polynomial r = new Polynomial(); ListIterator iterator = terms.listIterator(); while (iterator.hasNext()) { r.add((Term) iterator.next()); } ListIterator pIterator = p.terms.listIterator(); while (pIterator.hasNext()) { r.add((Term) pIterator.next()); } return r; } public Polynomial sub(Polynomial p) { Polynomial r = new Polynomial(); ListIterator iterator = terms.listIterator(); while (iterator.hasNext()) { r.sub((Term) iterator.next()); } ListIterator pIterator = p.terms.listIterator(); while (pIterator.hasNext()) { r.sub((Term) pIterator.next()); } return r; } public Polynomial multiply(Polynomial p) { Polynomial r = new Polynomial(); ListIterator iterator = terms.listIterator(); while (iterator.hasNext()) { ListIterator pIterator = p.terms.listIterator(); Term t1 = (Term) iterator.next(); while (pIterator.hasNext()) { Term t2 = (Term) pIterator.next(); r.add(t1.multiply(t2)); } } return r; } // Adds a coefficient and degree as a new Term. public void addTerm(int c, int d) { add(new Term(c, d)); } // Adds a term public void add(Term t) { int c = t.getCoeff(); int d = t.getDegree(); ListIterator iterator = terms.listIterator(); while (iterator.hasNext()) { Term current = (Term) iterator.next(); if (d == current.getDegree()) { if (c == -current.getCoeff()) iterator.remove(); else current.add(c); return; } else if (d 1) System.out.print("^" + current.getDegree()); } } } System.out.println(); } @SuppressWarnings("deprecation") public char getChar() { char val = ' '; String buffer = ""; DataInputStream ds = new DataInputStream(System.in); try { buffer = ds.readLine(); val = buffer.charAt(0); } catch (Exception e) { } return (val); } public char enterNext() { System.out.println("Enter next Polynomial? "); char ans = this.getChar(); switch (ans) { case 'n': case 'N': System.out.println("All Done."); System.exit(0); break; case 'y': case 'Y': System.out.println("Enter next one, please!"); } return ans; } private LinkedList terms; } // A test program for Polynomial and Term classes. public class RPC { private static char ans = 'y'; public static void main(String[] args) { Polynomial p = new Polynomial(); do { p.addTerm(10, 0); p.addTerm(-1, 1); p.addTerm(9, 7); p.addTerm(5, 10); System.out.print("f(x) = "); p.print(); System.out.println(); Polynomial q = new Polynomial(); do { q.addTerm(1, 0); q.addTerm(-11, 1); q.addTerm(19, 7); q.addTerm(15, 10); System.out.print("q(x) = "); q.print(); p.enterNext(); } while (!(ans != 'y') | !(ans != 'Y')); System.out.println(); Polynomial a = p.add(q); System.out.print("f(x) + q(x) = "); a.print(); Polynomial s = p.sub(p); s.print(); Polynomial m = p.multiply(q); System.out.print("f(x) * q(x) = "); m.print(); System.exit(0); } while (ans != 1000); } }Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.