java 2D arrays

xuxushiboy
TestEnrollment.java

package csv; /** * Tests the EnrollmentData class by passing in attributes to create an EnrollmentData instance. * The instance holds a 2D array of values for the enrollment indicator. The main() method * tests the instance of type EnrollmentData by passing data to fill the 2D array. * * @author Foothill College, [YOUR NAME HERE] */ public class TestEnrollment { // Indicates that the data is invalid. public final static int MISSING_DATA = -1; /** * Uses a CSVParser to parse a CSV file. * Adds each parsed line to an instance of the EnrollmentData class. */ public static void main(String[] args) { // Part 1: Testing with partial data for a country -------------------- System.out.println("Testing with childrenEnrolledInPrimary_short_12years.csv file:"); // Note: Currently we are replacing invalid final String [] countryNames = {"Canada", "India", "United States"}; final double [] partialPrimaryEnrollment01 = {MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,99.47058868,99.44992065,99.4045105,99.59809875,99.96224213}; final double [] partialPrimaryEnrollment02 = {MISSING_DATA,91.30478668,91.02262878,90.76931763,91.03694916,90.4213562,91.58106232,92.25010681,MISSING_DATA,MISSING_DATA,MISSING_DATA}; final double [] partialPrimaryEnrollment03 = {93.09568024,94.49015808,95.11688995,93.85852814,92.71695709,91.9122467,92.05748749,91.74311829,92.19660187,92.94197845,MISSING_DATA}; // TODO: Define the class EnrollmentData to store information // about all countries via multiple array objects, including // a 2D array of doubles. EnrollmentData datatable; // hard-coded based on input file int startingYear = 2006; // the number of rows in our 2D array should be the same of the number of countries // we have data on. int numRows = countryNames.length; // the number of years is equal to the number of data int numColumns = partialPrimaryEnrollment01.length; // TODO: Define a constructor with the given number of rows, // columns, and starting year. datatable = new EnrollmentData(numRows, numColumns, startingYear); // TODO: Add a country and its associated data to the table. datatable.addCountry(countryNames[0], partialPrimaryEnrollment01); datatable.addCountry(countryNames[1], partialPrimaryEnrollment02); datatable.addCountry(countryNames[2], partialPrimaryEnrollment03); // TODO: Define the toString() method of the EnrollmentData class to return a // string representation of the data table. This string will contain // newlines and be terminated with one. System.out.println(datatable.toString()); // the output is: /* Country Name 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 Canada 99.47 99.45 99.40 99.60 99.96 India 91.30 91.02 90.77 91.04 90.42 91.58 92.25 United States 93.10 94.49 95.12 93.86 92.72 91.91 92.06 91.74 92.20 92.94 */ // Part 2: Testing with all data for a country -------------------------------------------- System.out.println("\n\nTesting with childrenEnrolledInPrimary.csv file:"); final double [] primaryEnrollmentCountry01 = {MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA, MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA, MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA, 95.56710815,95.29425812,94.72662354,94.57524109,94.88964081,94.95413208,94.94940948,95.18415833,95.18572998, 97.73861694,97.48632813,95.86266327,95.30892181,94.18283081,95.11089325,MISSING_DATA,98.43271637,99.70514679, 99.91953278,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA, MISSING_DATA,MISSING_DATA,MISSING_DATA,99.47058868,99.44992065,99.4045105,99.59809875,99.96224213,MISSING_DATA}; final double [] primaryEnrollmentCountry02 = {MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA, MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,61.35797119,MISSING_DATA,MISSING_DATA, MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA, MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA, 77.50028992,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA, MISSING_DATA,MISSING_DATA,79.80341339,79.65550232,79.25736237,83.82756805,MISSING_DATA,MISSING_DATA, MISSING_DATA,91.30478668,91.02262878,90.76931763,91.03694916,90.4213562,91.58106232,92.25010681,MISSING_DATA, MISSING_DATA,MISSING_DATA,MISSING_DATA}; final double [] primaryEnrollmentCountry03 = {MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA, MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA, MISSING_DATA,81.58202362,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA, MISSING_DATA,MISSING_DATA,MISSING_DATA,MISSING_DATA,93.18254089,95.09078979,MISSING_DATA,MISSING_DATA, 98.64874268,98.65077209,MISSING_DATA,96.71166229,96.07853699,97.03784943,95.92057037,MISSING_DATA,MISSING_DATA, 94.83860016,94.74723053,94.76270294,92.86582947,92.60085297,91.33039093,91.78575134,93.09568024,94.49015808, 95.11688995,93.85852814,92.71695709,91.9122467,92.05748749,91.74311829,92.19660187,92.94197845,MISSING_DATA,MISSING_DATA}; // hard-coded based on input file startingYear = 1960; // Note: Below statement is redundant as the number of country names has not changed from part 1 numRows = countryNames.length; // the number of years is equal to the number of data numColumns = primaryEnrollmentCountry01.length; // Reinitializes the reference to a new object of type EnrollmentData datatable = new EnrollmentData(numRows, numColumns, startingYear); // Add a country and its associated data to the table. datatable.addCountry(countryNames[0], primaryEnrollmentCountry01); datatable.addCountry(countryNames[1], primaryEnrollmentCountry02); datatable.addCountry(countryNames[2], primaryEnrollmentCountry03); // Implicitly calls toString() method System.out.println(datatable); // the output is: /* Country Name 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 Canada 95.57 95.29 94.73 94.58 94.89 94.95 94.95 95.18 95.19 97.74 97.49 95.86 95.31 94.18 95.11 98.43 99.71 99.92 99.47 99.45 99.40 99.60 99.96 India 61.36 77.50 79.80 79.66 79.26 83.83 91.30 91.02 90.77 91.04 90.42 91.58 92.25 United States 81.58 93.18 95.09 98.65 98.65 96.71 96.08 97.04 95.92 94.84 94.75 94.76 92.87 92.60 91.33 91.79 93.10 94.49 95.12 93.86 92.72 91.91 92.06 91.74 92.20 92.94 */ // TODO: For full credit, include test cases in addition to those provided. // In this project, the test case is in the form of a third EnrollmentData instance // which is filled with data for more than three countries. The data should have // a range outside of the sample provided above. // // TODO: Test your implementation such that it can handle a variety of input files with: // a) different starting year // b) different ending year // c) different number of years // Note: Do *not* hard-code (and thereby restrict) your EnrollmentData class to only hold // years between 1960 and 2017. // To check the robustness of your implementation, *create* an input file with a different // number of years. System.out.println("\nDone with TestEnrollment.\n"); } }