/* Olympics.java Copyright (c) Kari Laitinen This program demonstrates the use of an array of objects, or, more precisely, an array that contains references to objects. The program first introduces a class named Olympics. An Olympics object can contain the data of olympic games. By using the Olympics class, an array named olympics_table is defined inside the main() method. olympics_table is used to search for data of olympic games. At the end of this file, you'll find another way to create the Olympics objects for olympics_table. */ // http://www.naturalprogramming.com // 2003-08-28 File created. // 2013-10-18 Last modification. // In a command prompt window, compile: javac Olympics.java // In a command prompt window, run: java OlympicsDataFinder import java.util.* ; class Olympics { int olympic_year ; String olympic_city ; String olympic_country ; public Olympics( int given_olympic_year, String given_olympic_city, String given_olympic_country ) { olympic_year = given_olympic_year ; olympic_city = given_olympic_city ; olympic_country = given_olympic_country ; } public int get_year() { return olympic_year ; } public void print_olympics_data() { System.out.print( "\n In " + olympic_year + ", Olympic Games were held in " + olympic_city + ", " + olympic_country + ".\n" ) ; } } class OlympicsDataFinder { public static void main( String[] not_in_use ) { Olympics[] olympics_table = new Olympics[ 40 ] ; olympics_table[ 0 ] = new Olympics( 1896, "Athens", "Greece" ) ; olympics_table[ 1 ] = new Olympics( 1900, "Paris", "France" ) ; olympics_table[ 2 ] = new Olympics( 1904, "St. Louis", "U.S.A." ); olympics_table[ 3 ] = new Olympics( 1906, "Athens", "Greece" ) ; olympics_table[ 4 ] = new Olympics( 1908, "London", "Great Britain"); olympics_table[ 5 ] = new Olympics( 1912, "Stockholm","Sweden" ) ; olympics_table[ 6 ] = new Olympics( 1920, "Antwerp", "Belgium" ) ; olympics_table[ 7 ] = new Olympics( 1924, "Paris", "France" ) ; olympics_table[ 8 ] = new Olympics( 1928, "Amsterdam","Netherlands"); olympics_table[ 9 ] = new Olympics( 1932, "Los Angeles", "U.S.A."); olympics_table[ 10 ] = new Olympics( 1936, "Berlin", "Germany" ) ; olympics_table[ 11 ] = new Olympics( 1948, "London", "Great Britain"); olympics_table[ 12 ] = new Olympics( 1952, "Helsinki","Finland" ) ; olympics_table[ 13 ] = new Olympics( 1956, "Melbourne","Australia" ) ; olympics_table[ 14 ] = new Olympics( 1960, "Rome", "Italy" ) ; olympics_table[ 15 ] = new Olympics( 1964, "Tokyo", "Japan" ) ; olympics_table[ 16 ] = new Olympics( 1968, "Mexico City","Mexico" ) ; olympics_table[ 17 ] = new Olympics( 1972, "Munich", "West Germany"); olympics_table[ 18 ] = new Olympics( 1976, "Montreal", "Canada" ) ; olympics_table[ 19 ] = new Olympics( 1980, "Moscow", "Soviet Union"); olympics_table[ 20 ] = new Olympics( 1984, "Los Angeles","U.S.A."); olympics_table[ 21 ] = new Olympics( 1988, "Seoul", "South Korea"); olympics_table[ 22 ] = new Olympics( 1992, "Barcelona","Spain" ) ; olympics_table[ 23 ] = new Olympics( 1996, "Atlanta", "U.S.A." ); olympics_table[ 24 ] = new Olympics( 2000, "Sydney", "Australia" ) ; olympics_table[ 25 ] = new Olympics( 2004, "Athens", "Greece" ) ; olympics_table[ 26 ] = new Olympics( 2008, "Beijing", "China" ) ; olympics_table[ 27 ] = new Olympics( 2012, "London", "Great Britain"); olympics_table[ 28 ] = new Olympics( 9999, "end of", "data" ) ; System.out.print("\n This program can tell where the Olympic " + "\n Games were held in a given year. Give " + "\n a year by using four digits: " ) ; Scanner keyboard = new Scanner( System.in ) ; int given_year = keyboard.nextInt() ; int olympics_index = 0 ; boolean table_search_ready = false ; while ( table_search_ready == false ) { if ( olympics_table[ olympics_index ].get_year() == given_year ) { olympics_table[ olympics_index ].print_olympics_data() ; table_search_ready = true ; } else if ( olympics_table[ olympics_index ].get_year() == 9999 ) { System.out.print( "\n Sorry, no Olympic Games were held in " + given_year + ".\n" ) ; table_search_ready = true ; } else { olympics_index ++ ; } } } } /***** // Here is an alternative way to create the array and // the Olympics objects. // Below the array for Olympics objects is created as an // initialized array. The array size will be the same as // the number of Olympics objects created inside the braces. // If you start using the table below, you should also take // away the 'absurd' Olympics object from the end. This will // require also that you modify the if construct of the program // so that it tests first whether the end of the table has // been reached. Olympics[] olympics_table = { new Olympics( 1896, "Athens", "Greece" ), new Olympics( 1900, "Paris", "France" ), new Olympics( 1904, "St. Louis", "U.S.A." ), new Olympics( 1906, "Athens", "Greece" ), new Olympics( 1908, "London", "Great Britain" ), new Olympics( 1912, "Stockholm","Sweden" ), new Olympics( 1920, "Antwerp", "Belgium" ), new Olympics( 1924, "Paris", "France" ), new Olympics( 1928, "Amsterdam","Netherlands"), new Olympics( 1932, "Los Angeles", "U.S.A."), new Olympics( 1936, "Berlin", "Germany" ), new Olympics( 1948, "London", "Great Britain" ), new Olympics( 1952, "Helsinki","Finland" ), new Olympics( 1956, "Melbourne","Australia" ), new Olympics( 1960, "Rome", "Italy" ), new Olympics( 1964, "Tokyo", "Japan" ), new Olympics( 1968, "Mexico City","Mexico" ), new Olympics( 1972, "Munich", "West Germany" ), new Olympics( 1976, "Montreal", "Canada" ), new Olympics( 1980, "Moscow", "Soviet Union" ), new Olympics( 1984, "Los Angeles","U.S.A."), new Olympics( 1988, "Seoul", "South Korea"), new Olympics( 1992, "Barcelona","Spain" ), new Olympics( 1996, "Atlanta", "U.S.A." ), new Olympics( 2000, "Sydney", "Australia" ), new Olympics( 2004, "Athens", "Greece" ), new Olympics( 2008, "Beijing", "China" ), new Olympics( 2012, "London", "Great Britain" ), new Olympics( 9999, "end of", "data" ) } ; ****/