# TextGraph

• 07-21-2005, 08:16 AM
Ant_Magma
TextGraph
I had my Java term paper yesterday, it was terrible. After the exam, i've attempted the question again but i still can't get the correct output. So i would appreciate if you guys can help me out here...

The question:

Create a class, TextGraph, which will draw a diagonal graph using text graphics. Here is an example of what the output of this program would look like if we told it the size was 80x24:
Code:

```                                                                                                  000                                                                                             0000                                                                                       000                                                                                 000                                                                           0000                                                                     000                                                               0000                                                           000                                                   0000                                             0000                                       0000                                 0000```
The formula of the graph is, x(height/width)=y

Since the origin starts at the bottom left hand corner, at that position, the first four "0"s are calculated by subsituting x=0,1,2 or 3 into the equation which will give the value y=0 when you convert it to integer

The last three "0"s (upper right hand) is computed based on the value of x=77,78 or 79. All produce y=23

This is the tester class
Code:

```class TextGraphTester{         public static void main(String[] args){                 int width=80, height=24;                 if(args.length>=1)width=Integer.parseInt(args[0]);                 if(args.length>=2)height=Integer.parseInt(args[1]);                 TextGraph g=new TextGraph(width, height);                 System.out.print(g);                 TextGraph h=new TextGraph(width, height);                 System.out.print("Equals or not? " +h.equals(g));                 h=new TextGraph(width, height*2);                 System.out.println("Again? " +g.equals(h));         } }```
End of question...

The following is my version of the code. The methods i used in my code are compulsary with the question.

Code:

```public class TextGraph{         private char[][] screen;         private char zero;        //Automatically initialized as zero         private int scrW;         private int scrH;         private int x;                //for width         private int y;                //for height         public TextGraph(int width, int height){                 scrW=width;                 scrH=height;                 screen= new char[scrW][scrH];        //Array is an object. Has to create with 'new'                 setPixel(x,y,zero);         }         public TextGraph(){                 scrW=80;                 scrH=40;                 screen= new char[scrW][scrH];        //Empty constructor initializing to default values         }         //-------------------------------------------------------------------------------------------         public int getWidth(){                 return scrW;         }         public int getHeight(){                 return scrH;         }         public boolean setPixel(int x,int y, char c){                 if((x>scrW)&&(y>scrH)&&(c!='0'))                         return false;                 else                         screen[x][y]=c;                 return false;         }         public char getPixel(int x,int y){                 return screen[x][y];         }         public void calculate(){                 for(int i=0;i<scrW;i++){                         this.y=i*(scrH/scrW);        //i=x;                         setPixel(i,y,zero);                 }         }         StringBuffer sb=new StringBuffer();      //Provided by sjalle, many thx!!         public String toString(){                 sb.setLength(0);                 for (int i=0; i<screen.length; i++) {                         for (int j=0; j<screen[i].length; j++) {                                 sb.append(screen[i][j]);                         }                 }                 return sb.toString();         }         public boolean equals(Object o){                 if(o==null)                         return false;                 else if(o.getClass()!=this.getClass())                         return false;                 else{                         TextGraph other=(TextGraph) o;                         if((other.getWidth()==this.getWidth())&&(other.getHeight()==this.getHeight()))                                 return true;                 }                 return false;         } }```
I know this is quite a lengthy thread. For guys out there willing to help, many thanks in advance!! :)
• 07-21-2005, 08:26 AM
ractoc
first of all, the char zero is automatically initialized as 0. this is not the same as '0'