CSC212 Homework 3 Solutions 2014
--D. Thiebaut (talk) 18:32, 27 September 2014 (EDT)
Problem #1
import java.io.File;
import java.io.FileNotFoundException;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Hw3_1 {
private static Scanner openFile( String fileName ) throws FileNotFoundException {
Scanner inFile;
//inFile = new Scanner(Hw3.class.getResourceAsStream(fileName) );
inFile = new Scanner( new File(fileName) );
return inFile;
}
private static double[] getNums( Scanner inFile ) {
double year;
double rain, sun;
//--- try to get the year, and if exception return a null array ---
try {
year = inFile.nextDouble();
}
catch (InputMismatchException e ) {
inFile.nextLine();
//System.out.println( "wrong year format..." );
return null;
}
//--- skip 4 doubles ---
for ( double i=0; i<4; i++ )
try {
inFile.nextDouble();
}
catch ( InputMismatchException e ) {
inFile.nextLine();
return null;
}
// get rain data
rain = 0;
sun = 0;
try {
rain = inFile.nextDouble();
}
catch ( InputMismatchException e ) {
rain = 0; // since invalid number, we set it to 0
sun = 0;
inFile.nextLine();
return new double[] { year, rain, 0 };
}
try {
sun = inFile.nextDouble();
}
catch ( InputMismatchException e ) {
sun = 0;
inFile.nextLine();
}
return new double[] { year, rain, sun };
}
public static void main(String[] args) {
Scanner inFile;
//--- display syntax if user does not specify input file ---
if ( args.length == 0 ) {
System.out.println( "Please specify a file name on the command line.");
return;
}
//--- try to open the file. ---
try {
inFile = openFile( args[0] );
} catch (FileNotFoundException e) {
System.out.println( "Cannot open " + args[0] );
return;
}
//--- read the file ---
double maxRain = 0, maxSun = 0;
double maxRainYear = 0, maxSunYear = 0;
for ( double i=0; inFile.hasNext(); i++ ) {
//System.out.println( i );
double[] nums = getNums( inFile );
if ( nums != null ) {
//System.out.println( nums[0] + " " + nums[1] + " " + nums[2] );
if ( nums[1] > maxRain ) { maxRain = nums[1]; maxRainYear = nums[0]; }
if ( nums[2] > maxSun ) { maxSun = nums[2]; maxSunYear = nums[0]; }
}
}
System.out.println( String.format( "rain %1.0f %1.2f", maxRainYear, maxRain ) );
System.out.println( String.format( "sun %1.0f %1.2f", maxSunYear, maxSun ) );
}
}
Problem #2
import java.io.File;
import java.io.FileNotFoundException;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Hw3_2 {
private static Scanner openFile( String fileName ) throws FileNotFoundException {
Scanner inFile;
//inFile = new Scanner(Hw3.class.getResourceAsStream(fileName) );
inFile = new Scanner( new File(fileName) );
return inFile;
}
private static double[] getNums( Scanner inFile ) {
double year;
double rain, sun;
//--- try to get the year, and if exception return a null array ---
try {
year = inFile.nextDouble();
}
catch (InputMismatchException e ) {
inFile.nextLine();
//System.out.println( "wrong year format..." );
return null;
}
//--- skip 4 doubles ---
for ( double i=0; i<4; i++ )
try {
inFile.nextDouble();
}
catch ( InputMismatchException e ) {
inFile.nextLine();
return null;
}
// get rain data
rain = 0;
sun = 0;
try {
rain = inFile.nextDouble();
}
catch ( InputMismatchException e ) {
rain = 0; // since invalid number, we set it to 0
sun = 0;
inFile.nextLine();
return new double[] { year, rain, 0 };
}
try {
sun = inFile.nextDouble();
}
catch ( InputMismatchException e ) {
sun = 0;
inFile.nextLine();
}
return new double[] { year, rain, sun };
}
public static void main(String[] args) {
Scanner inFile;
//--- display syntax if user does not specify input file ---
if ( args.length == 0 ) {
System.out.println( "Please specify a file name on the command line.");
return;
}
//--- try to open the file. ---
try {
inFile = openFile( args[0] );
} catch (FileNotFoundException e) {
System.out.println( "Cannot open " + args[0] );
return;
}
//--- read the file ---
double maxRain = 0, maxSun = 0;
double maxRainYear = 0, maxSunYear = 0;
for ( double i=0; inFile.hasNext(); i++ ) {
//System.out.println( i );
double[] nums = getNums( inFile );
if ( nums != null ) {
//System.out.println( nums[0] + " " + nums[1] + " " + nums[2] );
if ( nums[1] > maxRain ) { maxRain = nums[1]; maxRainYear = nums[0]; }
if ( nums[2] > maxSun ) { maxSun = nums[2]; maxSunYear = nums[0]; }
}
}
System.out.println( String.format( "rain %1.0f %1.2f", maxRainYear, maxRain ) );
System.out.println( String.format( "sun %1.0f %1.2f", maxSunYear, maxSun ) );
}
}
Problem #3
import java.util.Vector;
public class Hw3_3 {
public static void main(String[] args) {
// --- Test List ---
Vector dwarves = new Vector();
dwarves.add( (String) "Blick");
dwarves.add( (String) "Flick");
dwarves.add( (String) "Glick");
dwarves.add( (String) "Plick");
dwarves.add( (String) "Quee");
dwarves.add( (String) "Snick");
dwarves.add( (String) "Whick");
System.out.println("Snow White's friends:");
for (int i = 0; i < dwarves.size(); i++)
System.out.println( dwarves.get( i ) );
String dwarf;
try {
dwarf = (String) dwarves.get(-1);
System.out.println(dwarf);
} catch ( ArrayIndexOutOfBoundsException e ) {
System.out.println( "invalid index" );
}
try {
dwarf = (String) dwarves.get(20);
System.out.println(dwarf);
} catch ( ArrayIndexOutOfBoundsException e ) {
System.out.println( "invalid index" );
}
int n = dwarves.indexOf( "Quee" );
if ( n != -1 )
System.out.println( "Quee found at Index: " + n );
else
System.out.println( "Quee not found" );
n = dwarves.lastIndexOf( "Quee" );
if ( n != -1 )
System.out.println( "Quee found at Index: " + n );
else
System.out.println( "Quee not found" );
n = dwarves.indexOf( "Queen" );
if ( n != -1 )
System.out.println( "Queen found at Index: " + n );
else
System.out.println( "Queen not found" );
}
}