what would be the advantages (or limitations) of using a 2d array instead of multiple 1d arrays in this instance


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | int maxQuestions = 3 ; int questionCount; String[][] data = new String[maxQuestions][ 8 ]; // above outside method -- below inside method int count, field; for (count = 0 ; count < maxQuestions; count++) { line = in.readLine(); if (line == null ) break ; for (field = 0 ; field < 7 ; field++) { if (line.indexOf( ',' ) < 0 ) break ; data[count][field] = line.substring( 0 , line.indexOf( ',' )); line = line.substring(line.indexOf( ',' ) + 1 ); } data[count][field] = line; } questionCount = count; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | /* * I assume you've created your BufferedReader and called it "in" * This also instead of just reading 3 questions, it reads however * many questions there are in the file. */ import java.util.List; import java.util.ArrayList; List<String> question = new ArrayList<String>(), answer_a = new ArrayList<String>(), answer_b = new ArrayList<String>(), answer_c = new ArrayList<String>(), answer_d = new ArrayList<String>(), answer_correct = new ArrayList<String>(); String line; while ((line = in.readLine()) != null ) { try { String[] data = line.split( "," ); question.add(data[ 0 ]); answer_a.add(data[ 1 ]); answer_b.add(data[ 2 ]); answer_c.add(data[ 3 ]); answer_d.add(data[ 4 ]); answer_correct.add(data[ 5 ]); } catch (Exception e) {}} //If you really need it in arrays: String[] q = question.toArray(), a = answer_a.toArray(), //etc |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | // the following variables are instance variables // they are declared in the class but outside of any methods int maxQuestions = 3 ; //maximum possible number of questions int questionCount; // the final total number of questions read in String[][] data = new String[maxQuestions][ 8 ]; // the 2D array of Strings will hold all the data read in // the number inside the first [ ] is the question number // the number inside the second [ ] is the field number // The following code goes inside of a method int count, field; // since these will continue to be used outside the for loop, they are declared first // (the 'int field;' could be declared before the inside for loop) for (count = 0 ; count < maxQuestions; count++) // read in the file, one line at a time { line = in.readLine(); // reads a Line into 'line' if (line == null ) break ; // if no lines left exit for loop for (field = 0 ; field < 7 ; field++) // break the line down, one field at a time { if (line.indexOf( ',' ) < 0 ) break ; // if no seperators left, exit for loop (only one field left) data[count][field] = line.substring( 0 , line.indexOf( ',' )); // save first field of line line = line.substring(line.indexOf( ',' ) + 1 ); // remove first field from line } data[count][field] = line; // save last field of line } questionCount = count; // save total questions read in |