Hi I need some help with this lab. The world depends on it\'s successful compila
ID: 3745070 • Letter: H
Question
Hi I need some help with this lab. The world depends on it's successful compilation.
/*
Lab6.java Arrays, File input and methods
Read the comments and insert your code where indicated.
Do not add/modify any output statements. Do not modify main.
*/
import java.io.*;
import java.util.*;
public class Lab6
{
static final int NOT_FOUND = -1;
public static void main (String[] args) throws Exception
{
final int ARRAY_MAX = 30; // "args" is the list of tokens you put after "java Lab6" on command line
if (args.length == 0 ) // i.e If you did not type anything after "java Lab6" on command line
{
System.out.println("FATAL ERROR: Must type a filename on cmd line " +
"Like this -> C:\Users\tim\Desktop>java Lab6 L6input1.txt");
System.exit(0); //ABORT program. Make user try again with a filename this time.
}
Scanner infile = new Scanner( new File(args[0]) );
int[] array = new int[ARRAY_MAX];
int count=0;
int[] keys = { 35, 17, 201 };
// LOAD THE ARRAY FROM FILE
while ( infile.hasNextInt() ) array[count++] = infile.nextInt(); // POST increment NOT pre. Do you see why?
// ECHO COUNT AND LENGTH
System.out.println( "array capacity: " + array.length + " array count: " + count);
printArray( "array elements: ", array, count ); // ECHO ALL (count) ELEMENTS ON ONE LINE
// TEST YOUR THREE METHODS ON THREE DIFFERENT KEYS
for ( int key : keys ) // same as writing for(int i=0 ; i < keys.length; ++i) key = keys[i]
{ System.out.println(" key="+key );
int first = indexOf( array, count, key );
System.out.println("first occurance of " + key + " found at index: " + first );
int last = lastIndexOf( array, count, key );
System.out.println("last occurance of " + key + " found at index: " + last );
System.out.println("number of occurances of " + key + " in the array is: " + countOccurances( array, count, key, first, last ) );
}
} // END main
// GIVEN AS IS: DO MOT MODIFY OR DELETE
private static void printArray( String caption, int[] a, int cnt )
{
System.out.print( caption );
for ( int i=0 ; i<cnt ;i++)
System.out.print( a[i] + " " );
System.out.println();
}
// #############################################################################################
// YOU MUST WRITE THE DEFINTIONS OF THE METHODS BELOW THAT ARE CALLED IN MAIN
// #############################################################################################
// INDEXOF: RETURNS INDEX OF FIRST OCCURANCE OF KEY IN THE ARRAY -OR- RETURNS NOT_FOUND
private static int indexOf( int []arr, int count, int key )
{
return NOT_FOUND; // JUST TO MAKE IT COMPILE. YOU CHANGE AS NEEDED;
}
// LASTINDEXOF: RETURNS INDEX OF LAST OCCURANCE OF KEY IN THE ARRAY -OR- RETURNS NOT_FOUND
private static int lastIndexOf( int []arr, int count, int key )
{
return NOT_FOUND; // JUST TO MAKE IT COMPILE. YOU CHANGE AS NEEDED;
}
// COUNTOCCURANCES: RETURNS THE NUMBER OF TIMES KEY APPEARS IN THE ARRAY
// USE THE FIRST & LAST VALUES TO MINIMIZE THE RANGE INSIDE THE ARRAY THAT IS SEARCHED
private static int countOccurances( int []arr, int count, int key, int first, int last )
{
return 0; // JUST TO MAKE IT COMPILE. YOU CHANGE AS NEEDED;
}
} //END OF LAB6 CLASS
Explanation / Answer
If you have any doubts, please give me comment...
/*
Lab6.java Arrays, File input and methods
Read the comments and insert your code where indicated.
Do not add/modify any output statements. Do not modify main.
*/
import java.io.*;
import java.util.*;
public class Lab6 {
static final int NOT_FOUND = -1;
public static void main(String[] args) throws Exception {
final int ARRAY_MAX = 30; // "args" is the list of tokens you put after
// "java Lab6" on command line
if (args.length == 0) // i.e If you did not type anything after "java Lab6" on command line
{
System.out.println("FATAL ERROR: Must type a filename on cmd line "
+ " Like this -> C:\Users\tim\Desktop>java Lab6 L6input1.txt");
System.exit(0); // ABORT program. Make user try again with a filename this time.
}
Scanner infile = new Scanner(new File(args[0]));
int[] array = new int[ARRAY_MAX];
int count = 0;
int[] keys = { 35, 17, 201 };
// LOAD THE ARRAY FROM FILE
while (infile.hasNextInt())
array[count++] = infile.nextInt(); // POST increment NOT pre. Do you see why?
// ECHO COUNT AND LENGTH
System.out.println("array capacity: " + array.length + " array count: " + count);
printArray("array elements: ", array, count); // ECHO ALL (count) ELEMENTS ON ONE LINE
// TEST YOUR THREE METHODS ON THREE DIFFERENT KEYS
for (int key : keys) // same as writing for(int i=0 ; i < keys.length; ++i)
// key = keys[i]
{
System.out.println(" key=" + key);
int first = indexOf(array, count, key);
System.out.println("first occurance of " + key + " found at index: " + first);
int last = lastIndexOf(array, count, key);
System.out.println("last occurance of " + key + " found at index: " + last);
System.out.println(
"number of occurances of " + key + " in the array is: " + countOccurances(array, count, key, first, last));
}
} // END main
// GIVEN AS IS: DO MOT MODIFY OR DELETE
private static void printArray(String caption, int[] a, int cnt) {
System.out.print(caption);
for (int i = 0; i < cnt; i++)
System.out.print(a[i] + " ");
System.out.println();
}
// #############################################################################################
// YOU MUST WRITE THE DEFINTIONS OF THE METHODS BELOW THAT ARE CALLED IN MAIN
// #############################################################################################
// INDEXOF: RETURNS INDEX OF FIRST OCCURANCE OF KEY IN THE ARRAY -OR- RETURNS
// NOT_FOUND
private static int indexOf(int[] arr, int count, int key) {
for(int i=0; i<count; i++){
if(arr[i]==key)
return i;
}
return NOT_FOUND; // JUST TO MAKE IT COMPILE. YOU CHANGE AS NEEDED;
}
// LASTINDEXOF: RETURNS INDEX OF LAST OCCURANCE OF KEY IN THE ARRAY -OR-
// RETURNS NOT_FOUND
private static int lastIndexOf(int[] arr, int count, int key) {
for(int i=count-1; i>=0; i--){
if(arr[i]==key)
return i;
}
return NOT_FOUND; // JUST TO MAKE IT COMPILE. YOU CHANGE AS NEEDED;
}
// COUNTOCCURANCES: RETURNS THE NUMBER OF TIMES KEY APPEARS IN THE ARRAY
// USE THE FIRST & LAST VALUES TO MINIMIZE THE RANGE INSIDE THE ARRAY THAT IS
// SEARCHED
private static int countOccurances(int[] arr, int count, int key, int first, int last) {
int occur = 0;
for(int i=first; i<last; i++){
if(arr[i]==key)
occur++;
}
return occur; // JUST TO MAKE IT COMPILE. YOU CHANGE AS NEEDED;
}
} // END OF LAB6 CLASS