Solved

Calling a graphing method

Posted on 2006-11-26
1
242 Views
Last Modified: 2010-03-31
Assuming that i have the following code and it works to make just a basic graph show up without any graphing calculations yet....how do I call the graph from the MAIN METHOD to make it show up?

import java.util.Scanner;
import java.text.DecimalFormat;

public class Poly
{
     public static void main (String[] args)
          {
double c4,c3,c2,c1,c0,x,interval,xvalue;
int ptnumber,counter;
String result;

DecimalFormat fmt = new DecimalFormat ("0.##");

Scanner scan = new Scanner (System.in);

System.out.print ("Enter the coefficient of x^4(0.0 if none:");
c4 = scan.nextDouble();

System.out.print ("Enter the coefficient of x^3(0.0 if none:");
c3 = scan.nextDouble();

System.out.print ("Enter the coefficient of x^2(0.0 if none:");
c2 = scan.nextDouble();

System.out.print ("Enter the coefficient of x^1(0.0 if none:");
c1 = scan.nextDouble();

System.out.print ("Enter the constant:");
c0 = scan.nextDouble();

System.out.print ("Enter the starting value of x:");
x = scan.nextDouble();

System.out.print ("Enter the number of points to be graphed(Integer):");
ptnumber = scan.nextInt();

System.out.print ("Enter the interval between points:");
interval = scan.nextDouble();


Polynomial pn = new Polynomial(c4, c3, c2, c1, c0);

System.out.println("f(x)="+pn);

System.out.println("x     | f(x)");
System.out.println("----------");
counter = 0;
while (counter < ptnumber)
{

System.out.println(x          +"     | "+fmt.format(pn.evaluate(x)));

x = (x + interval);
counter++;
}

     }
}


POLY CLASS

import javax.swing.JPanel;
import java.awt.*;
import java.text.DecimalFormat;


import java.text.DecimalFormat;
public class Polynomial
{
   double coeff4, coeff3, coeff2, coeff1, constant;
     String sign4,sign3,sign2,sign1,sign0;
   public Polynomial(double c4, double c3, double c2, double c1, double c0)
     {
          coeff4 = c4;
          coeff3 = c3;
          coeff2 = c2;
          coeff1 = c1;
          constant = c0;
     
     }
     
     public double evaluate(double x)
     {
               
          double xsq = x*x;
         return (coeff4*xsq*xsq + coeff3*xsq*x + coeff2*xsq + coeff1*x + constant);
     
     }
     
     public String toString()

  {
        String result = "";

           if (coeff4 != 0)
        {
               result += coeff4+"x^4";
           }
          if (coeff3 != 0)
        {
            if (coeff3 > 0)
                result += "+";
             
               result += coeff3+"x^3";
           }
          if (coeff2 != 0)
        {
            if (coeff2 > 0)
                result += "+";
             
                result += coeff2+"x^2";
           }
           if (coeff1 != 0)
        {
            if (coeff1 > 0)
                result += "+";
             
               result += coeff1+"x";
           }
       if(constant!=0)
     {
      if(constant>0)
          result+="+";

         result += constant;
      }

          return result;
           
  }

     
  public void draw(Graphics page, int xPixels, int yPixels)
{
    final int NUM = 11;
    final double INTERVAL = 0.5;
    final double XSTART = 0.0;

    final int XMARGIN = 70;
    final int XUSABLEPIXELS = xPixels - 2*XMARGIN;
    final int XINTERVALPIXELS = XUSABLEPIXELS/(NUM - 1);
    final int YMARGIN =40;
    final int YUSABLEPIXELS = yPixels - 2*YMARGIN;
     
       // Label the graph
    page.drawString("Graph of f(x) = " + toString(), XMARGIN + 20, YMARGIN);

    // Draw the x axis and put in hash marks
    page.drawLine(XMARGIN, yPixels - YMARGIN, xPixels - XMARGIN, yPixels - YMARGIN);
    for ( int i = 0; i < NUM; i++ )
        page.drawLine(XMARGIN + i * XINTERVALPIXELS, yPixels - YMARGIN, XMARGIN + i * XINTERVALPIXELS, yPixels - YMARGIN + 5);
           
      DecimalFormat twoPlaces = new DecimalFormat("0.00");

    // Label the x axis
    for (int i = 0; i < NUM; i++)
    {
        page.drawString( twoPlaces.format(XSTART + i * INTERVAL), 3 * XMARGIN / 4 + i * XINTERVALPIXELS, yPixels - YMARGIN/2);
    }

    // Draw the y axis
    page.drawLine(XMARGIN, YMARGIN, XMARGIN, yPixels - YMARGIN);

    // Label the y axis and put in hash marks
    final double YMIN = 0.0;
    final double YINTERVAL = 100.0;
    final int YINTERVALPIXELS = YUSABLEPIXELS / 10;

    for (int i = 0; i < NUM; i++)
    {
        page.drawString(twoPlaces.format(YMIN + i * YINTERVAL), XMARGIN / 4, yPixels - i * YINTERVALPIXELS - YMARGIN);
        page.drawLine(XMARGIN, yPixels - YMARGIN - i * YINTERVALPIXELS, XMARGIN - 5, yPixels - YMARGIN - i * YINTERVALPIXELS);
    }

   
   }
}


           

0
Comment
Question by:lusius188
1 Comment
 
LVL 10

Accepted Solution

by:
ADSLMark earned 250 total points
Comment Utility
You have to create a class which extends from JFrame. You create an instance of this class in your main method. Next you add an extension of a JPanel with the graph drawing code to the frame and voila.

sth like:

import javax.swing.*;
class MyGraphExample extends JFrame
{
    public MyGraphExample()
    {
        this.setTitle("My graph");
        this.setSize(800,600);
        this.setLayout(new BorderLayout());
        this.add(new MyGraphPanel(), BorderLayout.CENTER);
    }
    public static void main(String[] args)
    {
        MyGraphExample mge = new MyGraphExample();
        mge.setVisible(true);
    }
}

import javax.swing.*;
class MyGraphPanel extends JPanel
{
    public MyGraphPanel()
    {
    }

    public void paintComponent(Graphics g)
    {
        ... perform drawing here ...
    }
}

Good luck.
Mark
0

Featured Post

Why You Should Analyze Threat Actor TTPs

After years of analyzing threat actor behavior, it’s become clear that at any given time there are specific tactics, techniques, and procedures (TTPs) that are particularly prevalent. By analyzing and understanding these TTPs, you can dramatically enhance your security program.

Join & Write a Comment

Suggested Solutions

After being asked a question last year, I went into one of my moods where I did some research and code just for the fun and learning of it all.  Subsequently, from this journey, I put together this article on "Range Searching Using Visual Basic.NET …
Introduction Java can be integrated with native programs using an interface called JNI(Java Native Interface). Native programs are programs which can directly run on the processor. JNI is simply a naming and calling convention so that the JVM (Java…
Video by: Michael
Viewers learn about how to reduce the potential repetitiveness of coding in main by developing methods to perform specific tasks for their program. Additionally, objects are introduced for the purpose of learning how to call methods in Java. Define …
Viewers learn how to read error messages and identify possible mistakes that could cause hours of frustration. Coding is as much about debugging your code as it is about writing it. Define Error Message: Line Numbers: Type of Error: Break Down…

772 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now