Instructions: Answer the following questions one at a time. After answering each question, check your answer (by clicking on the check-mark icon if it is available) before proceeding to the next question.
Getting Ready: Before going any further, you should:
DataUtilities.java that contains the
    following.
import java.io.*;
import java.util.*;
public class DataUtilities
{
    
    public static int[][] create(int rows, int columns)
    {
        return data;
    }    
}
create() method.
        int[rows][columns]       data;
create() method to:
        int[][]       data;
create() method
    after the declaration of data but before
    the return statement.
        int[] furniture  = {100,  95, 485, 290};
        int[] appliances = {300, 100,   0, 500};
furniture and
    appliances?
    
furniture and appliances.
        data = new int[rows][];
data
        data[0] = furniture;
data?
    
data[0]?
    
furniture?
    
data (after it is
    instantiated)?
    
furniture (after it is
    initialized)?
    
data[0] (after it is
    initialized)?
    
data
        data[1] = appliances;
create() method?
    
DataUtilities.java. (It should compile.)
    static method named print() to the
    DataUtilities class that is passed
    an int[][] named table,
    an int named rows and
    an int named columns and doesn't return
    anything.
    
print() method.
        for (int r = 0; r < rows; r++)
        {
            for (int c = 0; c < columns; c++)
            {
                System.out.printf("%8d ", table[r][c]);                
            }
            System.out.printf("\n");            
        }
rows is 2 and columns is 4.
    How many int values will be printed?
    
DataUtilities.java. (It should compile.)
    Driver.java that contains the
    following.
public class Driver
{
    public static void main(String[] args)
    {
    }
}
main() method.
        int[][]     sales;
        
        sales = DataUtilities.create(2, 4);
        DataUtilities.print(sales, 2, 4);
Driver.
    
create() as follows.
        sales = DataUtilities.create(3, 4);
Driver compile?
    
Driver execute properly? Why or why not?
    
create() as follows.
        sales = DataUtilities.create(2, 2);
Driver compile?
    
Driver execute properly? Why or why not?
    
create() as follows.
        sales = DataUtilities.create(1, 4);
Driver compile?
    
Driver execute properly? Why or why not?
    
create() as follows.
        sales = DataUtilities.create(2, 4);
print() as follows.
        DataUtilities.print(sales, 1, 3);
Driver compile?
    
Driver execute without throwing an exception?
    
print() as follows.
        DataUtilities.print(sales, 2, 5);
Driver compile?
    
Driver execute without throwing an exception?
    
print() as follows.
        DataUtilities.print(sales, 3, 4);
Driver compile?
    
Driver execute without throwing an exception?
    
length attribute?
    
print() method so that the outer
    loop uses the length of table.
    
Driver execute without throwing an exception?
    
table[0]?
    
table[0]?
    
table[1]?
    
table[r]?
    
print() method so that the inner loop no longer
    uses the parameter columns.
    
print() method use the
    parameters rows and columns?
    
rows and
    columns from the print() method and
    the corresponding actual parameters from the call to this method.
    create() method in the
    DataUtilities class after
appliances
    is assigned to data[1] but before the return
    statement.
        appliances[500] = 999;        
ArrayIndexOutOfBoundsException?
    
        appliances[2] = 999;        
Driver. What is output?    
    
create() to the following:
        data[0] = appliances;
        appliances[2] = 999;        
        data[1] = appliances;
create() back 
    to the following:
        data[0] = furniture;
        data[1] = appliances;
Driver. What was outupt?
    
create() back 
    to the following:
        data[0] = furniture;
        data[1] = appliances;
furniture
    as follows.
        int[] furniture  = {100,  95, 485};
Driver. What was outupt?
    
furniture
    and appliances as follows:
    as follows.
        int[] furniture  = {100,  95, 485, 290, 880, 730};
        int[] appliances = {300, 100};
Driver. What was outupt?
    
return statement.
        data[2] = furniture;
create() method
    in the DataUtilities class and the call to
    the create() method in the Driver class.
    DataUtilities class.
    public static int[][] read(String name, int rows, int columns)
        throws FileNotFoundException
    {
        int[][]       data;
        Scanner       scanner;
        scanner = new Scanner(new File(name));
        scanner.useDelimiter(",|\\r\\n");
    }
    Note that the Scanner in this method treats both the 
    comma character and the carriage return character followed by 
    the line feed character as delimiters. A comma is used between columns
    and a carriage return followed by a line feed is used between rows.
    
data so that it has
    rows elements, each of which contains an array
    of column elements. What code did you add?
    
for loop that iterates over the rows.
    What code did you add?
    
for loop that iterates over
    the columns. What code did you add?
    
nextInt()
    method of scanner and assigns the result to the appropriate
    element of data. What code did you add?
    
return statement.
    
Driver so that it now contains the following code.
import java.io.*;
public class Driver
{
    public static void main(String[] args)
    {
        int[][]     sales;
        
        try
        {
            sales = DataUtilities.read(args[0], 12, 5);        
            DataUtilities.print(sales);
        }
        catch (FileNotFoundException fnfe)
        {
            System.out.println("Unable to open " + args[0]);
        }
    }
}
Driver, passing
    it sales_2009-2013.txt as the command-line argument.
    .txt file into
    a text editor or a spreadsheet to check.)
    
Driver, passing
    it sales_1992-2013.txt as the command-line argument.
    .txt file into
    a text editor or a spreadsheet to check.)
    
read() method reads one element at a time
    it must know the number of row and columns. One could, instead, create
    a read() method that reads a row at a time (as a line).
    To that end, add the following code to the DataUtilities class.
    public static int[][] read(String name, int rows)
        throws FileNotFoundException
    {
        int[][]       data;
        int[]         row;        
        String        line;
        Scanner       scanner;
        
        scanner = new Scanner(new File(name));
    }
read() methods with different
    signatures in the DataUtilities class. What word is used to 
    describe this situation?
    
data so that it has
    rows elements, each of which contains an 
    int[]. What code did you add?
    
for loop that iterates over the rows.
    What code did you add?
    
for loop, add a statemen that reads the next line
    from scanner and assigns the result to the variable named
    line. What code did you add?
    
for loop, add a statement that calls the
    line object's split() method, passing
    it the String literal ",", and assigning the
    result to the variable rows.
    What code did you add?
    
for loop, add a statement that 
    instantiates element r of data
    to be an int[] that contains as many elements as 
    tokens.
    What code did you add?
    
for loop that iterates over
    the elements of tokens, converts each to an 
    int, and assigns that int to the appropriate
    element of data. What code did you add?
    
Driver so that it uses this version of the
    read() method. What code did you change?
    
Driver, passing
    it sales_2009-2013.txt as the command-line argument.
    .txt file into
    a text editor or a spreadsheet to check.)
    
Driver, passing
    it sales_1992-2013.txt as the command-line argument.
    .txt file into
    a text editor or a spreadsheet to check.)
    
Copyright 2019