Retrieving  two dimensional arrays from a text file.

Good evening
I am having a problem with reading a text file, and putting this info into a 2D array to be put into a table.
I have the table already(but no code to add rows to the table incase the array increases)
The array is called Product[a][ b ]
where a is the product number(the row), and b are details about this product.
The file i want to be read looks like this:
data.txt
CPU|AMD|X2, 64bit, 2GHz|$150|9
Video card|NVidia|7800 GTX 256MB|$400|4
e.g. product[2][4] would equal 4
Basically: Type, manufacturer, specifications, price, amount in stock.
the "splitter" or "field terminator" is "|"
This is what i want it to do:
Store fileline into single string,
split string and put it in product[ j ][ i ]
repeat with next lines until nothing is read anymore.
This is the code I have so far:
try{
        FileReader textFileReader = new FileReader("C://BACKUP2//data.txt");
        BufferedReader textReader = new BufferedReader(textFileReader);
        for(int j=0; j<0; j++){
             for(int i=0; i<6; i++){ //i starts at 0, condition: i is under 6, 1 is added to i at each loop/update.             
                   ProductT = textReader.readLine();
                   textReader.close();
                   for(String Product[j] : ProductT.split("|")){ //this line is completly wrong, but i don't know how else to do it.
     // for counting for the number of columns
catch (IOException e) {System.out.println(e);}
I don't even think this code makes any bloody sense, I don't know if I'm approaching it correctly.
Would anyone be gracious enough to give me a helping hand and tell me what/how to change my code?
from what I see, the problem lies less in the loops, but more in the splitting of the string. no function seems to like 2D arrays :(

So this is where I stand:
     //Reading
    try{
        FileReader textFileReader = new FileReader("C://BACKUP2//data.txt");
        BufferedReader textReader = new BufferedReader(textFileReader);
        for(int j=0; j>0; j++){ // this will go on forever now or what?
// yes, this will loop forever, which is fine as long as you break out of the loop when you reach the end of the file (which is indicated by textReader.readLine() returning null)
             // replace the for(String currentField : ProductT.split("|")) loop with this one
             //for(int i=0; i<6; i++){ //i starts at 0, condition: i is under 6, 1 is added to i at update.       
                  String inputline = textReader.readLine();    // read a single line from the file each time through the loop
                  //while (inputline != null) {
                        if (inputline != null) {    // check if the end of the file has been reached
                       //ProductT = textReader.readLine(); //put to single string
                   //textReader.close(); //shut it off    // move this line to the end of processing, you don't want to close the file until you've read everything from it.
                   //for(String currentField : ProductT.split("|")){   //Split string...      according to JBuilder "The local variable currentField is never read"
                         // switch this loop to use the regular for(  ;  ;  ) type, that way you will have another counter to use as the second index in the product assignment
                                     //currentField = Product[j];
                    product[i][] = currentField; // use the index of the second loop as the second index here
else {
break; // break out of the loop when end of file is reached
     //} // the for i etc. end here
} // End for j et cetera...
     } //end Try
catch (IOException e) {System.out.println(e);}
//cut the crap
// close the reader here
ok - so I am not quite sure about what you mean here
"Assign each of the 5 fields to the five [][j]
positions of the array. "
should i put 5 "fors" in there? - currently the
program is compiling - although they do not appear in
the table.I put comments in the code that should answer those questions.
The code for the table is
Object[][] data = {
          {Product[0][0], Product[0][1],
               Product[0][2], Product[0][3], Product[0][4]},
               {Product[1][0], Product[1][1],
Product[1][2], Product[1][3],
uct[1][3], Product[1][4]},
                      {Product[2][0], Product[2][1],
Product[2][2], Product[2][3],
ct[2][3], Product[2][4]},
                          {Product[3][0], Product[3][1],
Product[3][2],
Product[3][2], Product[3][3], Product[3][4]},
                {Product[4][0], Product[4][1],
Product[4][2],
Product[4][2], Product[4][3], Product[4][4]},
;If I do not declare any of these strings (e.g. I have
only declared Product[0-2][] oldschol style) an error
occurs, telling me that
Caused by:
java.lang.ArrayIndexOutOfBoundsException: 3
     at data.<init>(data.java:112)
     ... 5 more
When you declare product, you'll need to give it a size for both dimensions. The first dimension will be the number of lines to be read from the file. You'll need to know this before allocating the array, so either count them in the file, (if that's good enough for this assignment) or loop through the file once before reading it to count the lines. The second dimension of the array will be 5, since that's how many fields each line has.
btw; do I give those duke stars when all problems of
my life(currently: reading the two dimensional
string) have been resolved?I don't know about [i]all the problems of your life, but when the topic of the thread has been solved, then give them to whoever helped. :)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

Similar Messages

  • Reading in an array from a text file

    I'm trying to use a text file to load in some configuratin
    data (using actionscript 3) I have it working ok for simple stuff
    like gamename=Chess&gamescore=100 , etc... but some of the data
    needs to be in an array. Can someone please point me in the right
    direction to how I can read in an array from a text file?
    Thanks!

    the easiest way is to create a string with the (soon-to-be)
    array elements separated by a delimiter (like a double comma). read
    in your string, then use the split() method of strings to split
    your string into an array.

  • How to read numeric array from a text file

    I'm new to file I/O in LabView. Basically, all I need is to read the attached 2000 x 9 array into an identical 2D array within LabView. I have tried simply using the READ FROM SPREADSHEET FILE VI but it only reads the first column. Any help would be greatly appreciated.
    Thanks, Hunter
    Attachments:
    FRFx1.dat ‏286 KB

    I cant open theother examples, so maybe I`m posting something similar, but here`s my approach in LV 6.1
    First convert all double spaces to single spaces, then all single spaces to tab. Then use "Spreadsheet string to array" cutting out the first column (extra tabs produce an extra column).
    Shane.
    Using LV 6.1 and 8.2.1 on W2k (SP4) and WXP (SP2)
    Attachments:
    Read_in_Matlab_file(6.1).vi ‏26 KB

  • Reading a multi-dimensional array from a binary file?

    Hi, experts!
    Once again I'm stuck with a basic problem in labview. I've ben trying to make a VI that reads a binary measurement file that consists of a 2D array, i.e. n channels of sampled data. This seems to be easier said than done in LV and I the only example I find treats 1D-arrays exclusively. Take a look at the test file attached to this message. I saved it as a labview 7.1 file.
    Eternally grateful for all help
    Einar
    Attachments:
    W&R binary array.vi ‏115 KB

    Your write operation results into 1000 consecutive values written on disk without any array length indication. You can't read that data directly into a 2D array because the sizes are unknown to the Read function. You should read the whole file into a 1D array and the reshape the array into a 500 by 2 array. See the pict to figure how the Read/Write operations perform on arrays.
    Message Edité par JeanPierre le 03-14-2006 09:00 AM
    LabVIEW, C'est LabVIEW
    Attachments:
    Example_BD.png ‏18 KB

  • How to copy data in text file into two-dimensional arrays?

    Greeting. Can somebody teach me how to copy the input file into two-dimensional arrays? I'm stuck in making a matrix with number ROWS and COLUMNS according to the data in "input.txt"
    import java.io.*;
    import java.util.*;
    public class array
        public static void main (String[] args) throws FileNotFoundException
        { Scanner sc = new Scanner (new FileReader("input.txt"));
            PrintWriter outfile = new PrintWriter("output.txt");
        int[][]matrix = new int[ROWS][COLUMNS];
    }my input.txt :
    a,b,c
    2,2,1
    1,1,1
    2,2,1
    3,3,1
    4,4,1
    5,5,1
    1,6,2
    2,7,2
    3,8,2
    4,9,2
    5,10,2

    import java.io.*;
    import java.util.*;
    public class array {
        public static void main(String[] args) throws IOException {
            FileInputStream in = null;
            FileOutputStream out = null;
    try {
        in = new FileInputStream("input.txt");
        BufferedReader reader = new BufferedReader(new InputStreamReader(in));
        String line = null;
        while ((line = reader.readLine()) != null) {
            String split[]=line.split(",");
    catch (IOException x) {
        System.err.println(x);
    } finally {
        if (in != null) in.close();
    }}}What after this?

  • Reading characters from a text file into a multidimensional array?

    I have an array, maze[][] that is to be filled with characters from a text file. I've got most of the program worked out (i think) but can't test it because I am reading my file incorrectly. However, I'm running into major headaches with this part of the program.
    The text file looks like this: (It is meant to be a maze, 19 is the size of the maze(assumed to be square). is free space, # is block, s is start, x is finish)
    This didn't paste evenly, but thats not a big deal. Just giving an idea.
    19
    5..................
    And my constructor looks like follows, I've tried zillions of things with the input.hasNext() and hasNextLine() to no avail.
    Code:
    //Scanner to read file
    Scanner input = null;
    try{
    input = new Scanner(fileName);
    }catch(RuntimeException e) {
    System.err.println("Couldn't find the file");
    System.exit(0);
    //Set the size of the maze
    while(input.hasNextInt())
    size = input.nextInt();
    //Set Limits on coordinates
    Coordinates.setLimits(size);
    //Set the maze[][] array equal to this size
    maze = new char[size][size];
    //Fill the Array with maze values
    for(int i = 0; i < maze.length; i++)
    for(int x = 0; x < maze.length; x++)
    if(input.hasNextLine())
    String insert = input.nextLine();
    maze[i][x] = insert.charAt(x);
    Any advice would be loved =D

    Code-tags sometimes cause wonders, I replaced # with *, as the code tags interprets # as comment, which looks odd:
    ******...*.........To your code: Did you test it step by step, to find out about what is read? You could either use a debugger (e.g., if you have an IDE) or system outs to get a clue. First thing to check would be, if the maze size is read correctly. Further, the following loops look odd:for(int i = 0; i < maze.length; i++) {
        for(int x = 0; x < maze.length; x++) {
            if (input.hasNextLine()) {
                String insert = input.nextLine();
                maze[x] = insert.charAt(x);
    }Shouldn't the nextLine test and assignment be in the outer loop? And assignment be to each maze's inner array? Like so:for(int i = 0; i < maze.length; i++) {
        if (input.hasNextLine()) {
            String insert = input.nextLine();
            for(int x = 0; x < insert.size(); x++) {
                maze[i][x] = insert.charAt(x);
    }Otherwise, only one character per line is read and storing a character actually should fail.

  • Reading from a text file into a 2D array

    How do you read from a text file and put it into a 2D array? Or if someone could guide me to where I can find the information?

    This tutorial shows how to read a file:
    http://java.sun.com/docs/books/tutorial/essential/io/scanfor.html
    This tutorial shows how to create arrays with multiple dimensions:
    http://java.sun.com/docs/books/tutorial/java/nutsandbolts/arrays.html

  • Reading one line from a text file into an array

    i want to read one line from a text file into an array, and then the next line into a different array. both arays are type string...i have this:
    public static void readAndProcessData(FileInputStream stream){
         InputStreamReader iStrReader = new InputStreamReader (stream);
         BufferedReader reader = new BufferedReader (iStrReader);
         String line = "";          
         try{
         int i = 0;
              while (line != null){                 
                   names[i] = reader.readLine();
                   score[i] = reader.readLine();
                   line = reader.readLine();
                   i++;                
              }catch (IOException e){
              System.out.println("Error in file access");
    this section calls it:
    try{                         
         FileInputStream stream = new FileInputStream("ISU.txt");
              HighScore.readAndProcessData(stream);
              stream.close();
              names = HighScore.getNames();
              scores = HighScore.getScores();
         }catch(IOException e){
              System.out.println("Error in accessing file." + e.toString());
    it gives me an array index out of bounds error

    oh wait I see it when I looked at the original quote.
    They array you made called names or the other one is prob too small for the amount of names that you have in the file. Hence as I increases it eventually goes out of bounds of the array so you should probably resize the array if that happens.

  • How to save input from a text file in to array

    I got this assignment, and almost have no clue, and my teacher doesn't even teaches us anything
    This is what i am suppose to do
    5. The program must store the following data about each student in this Talent Show:
    * The student's name (store as a String)
    * The student's average time score [only for the events they competed in] (store as a Double)
    Note: Some of the data comes directly from the text file, and some of the data must be calculated from the data that is read from the file.
    6. The program must search through all of the student's scores to find the student who has the minumum average time of all students.
    7. You must calculate how many events each student played. Zero values are not counted.
    8. You must then generate a report on the screen that prints out
    * the total number of students in the competition,
    * the winning student's ...
    o name
    o times
    o average time (rounded to one decimal places)
    Sample output
    btw this is the data file
    Bart Simpson
    7.5
    12.3
    7.8
    19.2
    9.9
    5.3
    8.5
    11.8
    2.2
    4.6
    Stewie Griffin
    9.5
    29.7
    7.8
    22.5
    9.9
    12.6
    8.5
    0
    8.2
    0
    Pinky
    2.5
    0
    1.8
    0
    3.9
    0
    6.5
    0
    5.2
    12.1
    Rocky N Bullwinkle
    10.0
    22.2
    9.5
    17.5
    9.9
    1.5
    8.7
    23.7
    9.2
    11.0
    Angelica Pickles
    5.5
    11.1
    6.8
    12.2
    7.9
    13.3
    8.1
    5.1
    7.2
    7.9
    Pink Panther
    8.5
    5.5
    8.8
    6.6
    8.9
    7.7
    9.9
    8.8
    2.2
    9.9
    Josie
    9.5
    0
    8.8
    12.2
    9.9
    0
    8.5
    0
    9.2
    5.3
    Rogue
    8.5
    1.1
    7.8
    2.2
    7.9
    3.3
    7.5
    4.4
    8.2
    5.5
    Usagi Tsukino
    8.5
    15.5
    8.8
    30.1
    9.9
    19.7
    9.5
    11.0
    8.2
    8.6
    Yosemite Sam
    0
    15.2
    0
    29.5
    3.9
    0
    0
    16.0
    0
    7.7
    My code so far
    import java.io.*;
    public class test
        public static void main (String [] args)
            FileInputStream File1;
            DataInputStream In;
            String fileInput = "";
            try
               File1 = new FileInputStream ("data.txt");
                In = new DataInputStream (File1);
                while (In.available () > 0)
                    fileInput = In.readLine ();
                    System.out.println (fileInput);
                In.close ();
            catch (FileNotFoundException e)
                System.out.println ("Error - this file does not exist");
            catch (IOException e)
                System.out.println ("error=" + e.toString ());
    }My question, how do i save the data in to an array, and how do i seperatly save names in to different array, and their scores in to different arrays
    bte he said you can use scanner class
    Thanks
    Edited by: supahsain08 on Mar 26, 2008 2:55 PM

    supahsain08 wrote:
    Well, you are not in my class and you don't even know my teacher
    who are you to judge meHe is jaded by our experiences here. 99% of posters who complain that the teacher doesn't teach have adequate (note that I didn't say good) teachers, but it's the student who is failing to take responsibility for his own education. It is after all your responsibility and complaining won't help you any.
    Good luck.

  • Reading from a text file in to an array, help please

    I have the following
    public class date extends Loans{
    public int dd;
    public int mm;
    public int yyyy;
    public String toString() {
    return String.format( "%d,%d,%d", mm, dd, yyyy );
    public class Loans extends Borrowing {
    public String name;
    public String book;
    public date issue;
    public char type;
    public String toString(){
    return String.format( "%s, %s, %s, %s", name, book, issue, type );
    import java.util.Scanner;
    import java.io.*;
    public class Borrowing extends BorrowingList {
    private Loans[] Loaned = new Loans[20];
    if i want to read in from a text file in to that array how do i do it?

    sorry to keep bothering you and thanks loads for your help but now I am getting the following error mesage
    C:\Documents and Settings\MrW\Menu.java:43: cannot find symbol
    symbol : class IOException
    location: class Menu
    }catch(IOException e){
    Note: C:\Documents and Settings\MrW\Borrowing.java uses unchecked or unsafe operations.
    Note: Recompile with -Xlint:unchecked for details.
    1 error
    BUILD FAILED (total time: 0 seconds)
    for this line
    }catch(IOException e){                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • Retrieving certain line from a text file

    Hi,
    I would like to know on how to read a specific line from a text file using NetBeans IDE 6.1? Below is the content of my text file and my code.I will appreciate if anyone can help. Thank in advance= D
    Matrix1.text
    <matrix>
    rows = 2
    cols = 2
    1 2
    2 4
    </matrix>
    I would like to retrieve the interger 1,2,2,4.
    MyCode.java
    import java.io.IOException;
    import java.io.FileReader;
    import java.io.BufferedReader;
    import java.io.FileNotFoundException;
    class Matrix {
    double [][] element;
    static void getFile(String fileName) throws IOException{
    int counter = 0;
    BufferedReader br = null;
    try{
    br = new BufferedReader(new FileReader(fileName));
    String line = br.readLine();
    while (line != null){
    line = br.readLine();
    System.out.println(line);
    counter ++;
    System.out.println("Total line : " + counter);
    br.close();
    }catch(FileNotFoundException ex){
    System.out.println(ex.getMessage());
    }

    Wonders wrote:
    Thank for reply=D
    Yap the row and column will change but i had already parse these lines into my code. However, i am still figuring on how to get the integer number 1,2,2,4 of the text file using while loop and not include the "</matrix>" in the reading. Can this be done?If the numbers you want are at fixed byte positions in the file that are known ahead of time, you can use java.io.RandomAccessFile to skip to those positions. However, that seems unlikely.
    If, as is the more likely case, those are not at fixed positions, you'll have to read everything preceding them. (Note that this is not a Java issue. This is how file I/O works.) You'll need to ignore the lines that are meaningless to you (read those lines and do nothing with them) figure out, by whatever rules you have--line numbers, preceding tokens, whatever--when you're at the lines you do care about, and then read and process those lines accordingly.

  • Saving two dimensional array to a file

    I am trying to save a two dimensional array to a file.
    If I write a part of the whole array like Filename[1] it works fine.
    But the whole array will cause an Errormessage to appea:
    "cannot find symbol"
    Here is the Code:
      RandomAccessFile output = null;
        try
          output = new RandomAccessFile( "TestPlan.plan", "rw" );
          output.seek( output.length() );       // Dateizeiger an das Ende
          output.write( Karte );  // Zeile schreiben

    Seems that OutputStreamWriter and ByteArrayOutputStream can only handle one dimensional arrays, too.in that case, break down the arrays to single objects, and serialize them individually

  • Retrieve data from a text file and insert in table

    hi,
    i am writing an application which when executes would creates a user table and populates it with the data i.e. username and passwords taking it from a text file.
    i would like to know if anybody can help as to how can i retreive the user name and password for every insert statement that will be fired to populate the user table.
    thanks in advance for the help

    for csv try a little search:
    http://search.java.sun.com/Search/java?col=javafrm&qp=%2Bforum%3A31&qt=csv+import
    search for ini files:
    http://search.java.sun.com/Search/java?qt=ini+file&col=javafrm&rf=0&qp=%2Bforum%3A31
    hope this helps
    tobias

  • Creating a Two Dimensional Array in Xcode and populating it with a values f

    Whats the easiest way to declare a two dimensional array in Xcode. I am reading an matrix of numbers from a text file from a website and want to take the data and place it into a 3x3 matrix.
    Once I read the URL into a string, I create an NSArray and use the componentsSeparatedByString method to strip of the carriage return line feed and create each individual row. I then get the count of the number of lines in the new array to get the individual values at each row. This will give mw an array with a string of characters, not a row of three individual values. I just need to be able to take these values and create a two dimensional array.

    I'm afraid you are in the wrong place. Look here for the last two forums on programming. However, XCode support is mostly found at developer.apple.com. You can access their forums by registering. Registration is free.

  • How to read some lines from a text file using java.

    hi,
    i m new to java and i want to read some lines from a text file based on some string occurrence in the file. This file to be read in steps.
    we only want to read the file upto the first Occurrence of "TEXT" string.
    How to do it ,,,
    Kinldy give the code
    Regards,
    Sagar
    this is the text file
    dfgjdjj
    sfjhjkd
    ghjkdg
    hjkdgh TEXT
    ikeyt
    ujt
    jk
    tyk TEXT
    rukl
    r

    Hendawy wrote:
    Since the word "TEXT" is formed of 4 letters, you would read the text file 4 bytes by four bytes. Wrong on two counts. First, the file may not be encoded 1 byte per character. It could be utf-16 in which case it would be two byte per character. Second, even if it were 1 byte per character, the string "Text" may not start on a 4 byte boundary.
    Consider a FileInputStream object "fis" that points to your text file. use fis.read(byte[] array, int offset, int len) to read every four bytes. Convert the "TEXT" String into a byte array "TEXT".getBytes(), and yous the Arrays class to compare the equality of the read bytes with your "TEXT".getBytes()Wrong since it relies on my second point and will fail when fis.read(byte[] array, int offset, int len) does not read 4 bytes (as is no guaranteed to). Check the Javadoc. Also, the file may not be encoded with the default character encoding.
    The problem is easily solved by reading a line at a time using a BufferedReader wrapping an InputStreamReader wrapping a FileInputStream and specifying the correct character encoding.
    Edited by: sabre150 on Apr 29, 2009 2:13 PM

Maybe you are looking for

  • Add URL to a button

    Alright I know this is gonna seem ridiculous, but I've done it a few times and something always goes buggar.. so using a button already made from a template the code is this: onClipEvent (load) {      num = 5;      link_num = _root.getMenuSystemOrder

  • Camera app loses draft when multitasking

    From within the Camera app, if you choose to share a photo using email, begin writing your message, switch to another app (Safari, for instance), then switch back to Camera, you're presented with the camera interface and your draft is gone. You are n

  • How to download  a games in

    i want to download games in my iphone

  • Problem with portlet addin

    Hopefully someone can help me with the following problem, I'm trying to setup a demo of portlets for a customer. I've downloaded the latest portlet wizard addin that supports JSR 168. But after following the installation instructions it did not work

  • Mail won't stay open on iphone!

    Nothing has changed, I've just suddenly can't keep my iphone mail open, can't read, send, I open it and it suddenly it goes back to the home page.