Go Back   CodingForums.com > :: Server side development > Java and JSP

Before you post, read our: Rules & Posting Guidelines

Reply
 
Thread Tools Rate Thread
Enjoy an ad free experience by logging in. Not a member yet? Register.
Old 02-02-2013, 06:35 AM   PM User | #1
Jlottie9
New to the CF scene

 
Join Date: Feb 2013
Posts: 1
Thanks: 0
Thanked 0 Times in 0 Posts
Jlottie9 is an unknown quantity at this point
Adding values to an int myPoints[][] array

I have been struggling with this program for much longer than I should be. I am teaching myself java and I was wanting to try to knock out a few of the basics by reading in a file formatted like:

Code:
   3 //Number of lines in the file
    14   15
    43   23
    34   12
then I wanted to take those points and draw a line in between them all. I think I can do it by creating an int[][] array and then add the points to where I can eventually just use drawLine(x1,y1,x2,y2). There may be a much better way to do this, but I am completely stuck. Any help would be appreciated!

Code:
Code:
    import javax.swing.*;
    import java.awt.*;
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    
    public class Test {
    
        private static final String FILE = "file.txt";
        public double[][] myPoints;
    	 
    
        public static void main(final String[] args){
            try{
                final BufferedReader br = new BufferedReader(new FileReader(new File(FILE)));
                points = new myPoints[Integer.parseInt(br.readLine())];
                int i = 0;
                int xMax = 0;
                int yMax = 0;
                while(br.ready()){
    				 String line;
    				 for (int i = 0; (line = br.readLine()) != null; i++) {
    					for (int i = 0; i <= even.length; i++) {
                    final String[][] split = even.split("   ");
                    final int x = Integer.parseInt(split1[0]);
                    final int y = Integer.parseInt(split1[1]);
    					
    
                    xMax = Math.max(x, xMax);
                    yMax = Math.max(y, yMax);
                    points[i++] = new Point(x, y);
    					 
    					 
    					 
    					 
                }
                final JFrame frame = new JFrame("Point Data Rendering");
                final Panel panel = new Panel();
                panel.setPreferredSize(new Dimension(xMax + 10, yMax + 10));
                frame.setContentPane(panel);
                frame.pack();
                frame.setVisible(true);
                frame.repaint();
            } catch (final Exception e){
                e.printStackTrace();
            }
        }
    
        public static class Panel extends JPanel {
    
            @Override
            public void paintComponent(final Graphics g){
                g.setColor(Color.RED);
    //This was just when I was plotting the points, but my drawline stuff will go here.
                for(final Point p : points){
    				
                    g.fillRect((int) p.getX(), (int) p.getY(), 2, 2);
                }
            }
    
        }
    
    }
Jlottie9 is offline   Reply With Quote
Old 02-02-2013, 01:44 PM   PM User | #2
Fou-Lu
God Emperor


 
Fou-Lu's Avatar
 
Join Date: Sep 2002
Location: Saskatoon, Saskatchewan
Posts: 15,648
Thanks: 4
Thanked 2,450 Times in 2,419 Posts
Fou-Lu is a name known to allFou-Lu is a name known to allFou-Lu is a name known to allFou-Lu is a name known to allFou-Lu is a name known to allFou-Lu is a name known to all
Looks to me that you have jumped into the deep end of the pool before trying out the shallow end. There's a lot here you are wanting to do, but you're not familiar with the basics before continuing into the intermediate functionality.
Start simple, then move to complex. The idea you have is right, but its implementation is incorrect. You have datatype mismatches here, and incorrect usage of object properties.

Here's what I suggest. Start without worrying about a visual rendering component. Drop all associations with gui components, and work it off of a command line app. The goal is to get the data from the file, and into an array or collection. Choose if the array should be primitive like a double[][], or an array of object such as Point. I'd suggest using a multidimensional primitive since that will kill two birds with one stone. Once you have the data in the array, then iterate it using a for or foreach style for syntax and just a tabular style output. When you have this data, then you can move into gui components.
Watch for your datatypes and property handling. myPoints isn't a datatype, so it cannot be instantiated, and points isn't defined as any datatype. Watch your scope as well, nested loops cannot use the same control variable (ie: i), since i will be altered in both the inner and outer loops. Use different variables for control (i, j are typically good options). I'd suggest using split on a simple space character, and then using trim on the strings provided.
When you can get the data into the array properly, then you can look at the gui aspect. I'd extend a JPanel directly and accept the data collection into the constructor OR give it a file to read itself.
If you don't follow the simple to complex approach when learning a language, you'll always end up in the situation of "its not working but I don't know what is wrong". This is why you need to get a solid understanding of each part one at a time in order to diagnose what is wrong. That way you can look at something and say "the file is correctly read and stored, but its not rendered on the panel properly" so that gives you a spot to debug instead of being unsure of what in particular isn't working.
__________________
As of PHP 5.5, the MySQL library has been officially deprecated. It is recommended to move to either MySQLi or PDO libraries for your mysql connectivity. See here for help choosing which interface you prefer: http://php.net/manual/en/mysqlinfo.api.choosing.php
Fou-Lu is offline   Reply With Quote
Reply

Bookmarks

Tags
arrays, bufferedreader, drawline, files, java

Jump To Top of Thread


Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 07:56 PM.


Advertisement
Log in to turn off these ads.