Question: can someone please correct the code so that it can do this //import statemnts for Random, Scanner and IO import java.util.Random; import java.util.Scanner; import java.io.*;

can someone please correct the code so that it can do this

//import statemnts for Random, Scanner and IO import java.util.Random; import java.util.Scanner; import java.io.*;

public class Hobbits { public static void main(String[] args) throws IOException { final int NUM_HOBBITS = 5; final int NUM_COLUMNS = 2; String fileName = "hobbits.csv";

//call populateHobbits() to create the two-dimensional array double[][] hobbits = populateHobbits(NUM_HOBBITS, NUM_COLUMNS);

//display the number of hobbits System.out.println(hobbits.length + " hobbits accepted Gandalf's invitation to lunch ");

//calculate the means of the columns double[] hobbitMeans = getColMeans(hobbits);

//write hobbits array to file writeHobbits(hobbits, fileName);

//read and display the file that has been read readHobbits(fileName);

//call displayColMeans to display hobbit means displayColMeans(hobbitMeans); }

//method to populate hobbits array with random double values public static double[][] populateHobbits(int numHobbits, int numCols) { final double HT_MULTIPLIER = 10.0; //multiplier for the hobbit height final double WT_MULTIPLIER = 250.0; //multiplier for the hobbit weight

//instantiate Random object Random rand = new Random();

//declare two dim array with numHobbits rows numCols columns double[][] hobbitArray = new double[numHobbits][numCols];

//assign random double values to all elements for (int i = 0; i < numHobbits; i++) //outer loop is for rows { for (int j = 0; j < numCols; j++) //inner loop is for columns { //get a random double value in range [0.2, 0.4] double randDouble = getRandDouble(rand);

//assign this double to the current array element hobbitArray[i][j] = randDouble;

//determine which multiplier to use if (j == 0) //this is column for height hobbitArray[i][j] *= HT_MULTIPLIER; else //this is column for weight hobbitArray[i][j] *= WT_MULTIPLIER; } } return hobbitArray; //return the two-dimensional array }

//method to write hobbits array to file public static void writeHobbits(double[][] ar, String fileName) throws IOException { //open the file to write PrintWriter outFile = new PrintWriter(fileName);

//print column heading of the array of stats outFile.println("HEIGHT,WEIGHT");

for (int i = 0; i < ar.length; i++) { for (int j = 0; j < ar[i].length; j++) { outFile.print(ar[i][j]);

//if at end of a row, add newline char if (j == ar[i].length - 1) outFile.print(" "); else //add the "," delimiter outFile.print(","); } //end of inner loop } //end of outer loop

outFile.close(); //close outfile

System.out.println("The file was successfully written "); } //end of method

//method to read the hobbits file public static void readHobbits(String fileName) throws IOException { //

//open the file to read File dateFile = new File(fileName); Scanner inFile = new Scanner(dataFile); //variable to conatin the substrings of one line of file String[] oneLine = new String[2]; int counter = 0; //keep track of line numers System.out.println("Data read from the " + fileName + " file:"); //read file, one line at a time while(inFile.hasNext()) { String dataLine = inFile.nextLine(); oneLine = dataLine.split(","); //split line with delimiter if (counter > 0) //for second line and beyond, format doubles { System.out,printf("%.2f\t\t%.2f ", Double.parseDouble(oneLine[0]), Double.parseDouble(oneLine[1])); } else //if this first line, display the column heading System.outprintln(oneLine[0] + "\t" + oneLine[1]); if (inFile.hadNext()) counter++; //keep track of how many lines } //edn while loop read file inFile.close(); //close the file System.out.println ("The file has now been successfully read. "); } //end of method //method to determine average values of columns two dim array public static double[] getColMeans(double[][] ar) { //local array to store means //array is sized according to length second dimension of parameter //first element is mean of first cplumn //second element is mean of second column, etc double[] meanAr = new double[ar[0].length]; //nested for loop to iterate through elements in parameter for (int i = 0; i < ar.length; i++ { for (int j = 0; j < ar[i].length; j++) { //sum the elements in the current column meansAr[j] += ar[i][j]; } } //end of outer loop //replace the sum with the average; i.e. divide by number of rows for (int i = 0; i < meansAr.length; i++) meansAr[i] /= ar.length; return meansAr; } //end of method student submitted image, transcription available below

Lab16 Sample output

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!