PLEASE HELP IN JAVA:
There are 2 input files, one contains days – one day (String) per line – and the other contains temperatures – again one (double) per line. You are to read in one day and one temp, and make a Temperature object. Do not try to separate month and date, just treat April 23 as a single String. You will need to create a Temperature class. You need only code the methods you need but make sure it has a compareTo (compares temps).
I have given you the main method. You will see that once you input all the data , create objects, and fill the array, you then print it out , and then find the hottest day in the year. Note that I just used a random number generator and it is as likely there were very hot days in December as very cold ones in July.
ask the user for a month, and then print the hottest day in that month. Note that you will need 2 different findLargest methods.
public static void main(String[] args) {
Temperature [] myArray = new Temperature[365];
readData(myArray);
printData (myArray);
Temperature big=findLargest(myArray);
System.out.println(“Hottest day was ” + big);
System.out.println(“Which month ?”);
Scanner s = new Scanner(System.in);
String month=s.nextLine();
big= findLargest(month, myArray);
System.out.println(“Hottest day in ” + month + ” was ” + big);
}
public static void readData(Temperature[] t)
{ Scanner scan1=null, scan2=null;
try{
scan1 = new Scanner(new BufferedInputStream(new FileInputStream(“days.txt”)));
//daya.txt contains the days
//temps.txt contains the temperature for each corresponding day
//so the first temperature (double) in temps.txt is the temperature for
//January 1, the second is for January 2 etc.
scan2 = new Scanner(new BufferedInputStream(new FileInputStream(“temps.txt”)));
} catch (FileNotFoundException e){
}
//Input data, create Temperature objects, and fill array
}
}
Expert Answer
Hey,
I am providing the code below. Feel free to comment if you don’t understand any part of it. Also don’t forget to give a thumbs up if this answer helped you.
// code starts here
import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.util.Scanner; class Temperature implements Comparable<Temperature>{ private String day; private double temperature; public static void main(String[] args) { Temperature[] myArray = new Temperature[365]; readData(myArray); printData(myArray); Temperature big = findLargest(myArray); System.out.println("Hottest day was " + big); System.out.println("Which month ?"); Scanner s = new Scanner(System.in); String month = s.nextLine(); big = findLargest(month, myArray); System.out.println("Hottest day in " + month + " was " + big); } private static void readData(Temperature[] t) { Scanner scan1 = null, scan2 = null; try { scan1 = new Scanner(new BufferedInputStream(new FileInputStream("days.txt"))); scan2 = new Scanner(new BufferedInputStream(new FileInputStream("temps.txt"))); //daya.txt contains the days //temps.txt contains the temperature for each corresponding day //so the first temperature (double) in temps.txt is the temperature for //January 1, the second is for January 2 etc. //Input data, create Temperature objects, and fill array for (int i = 0; i < 365; i++) { t[i] = new Temperature(); t[i].day = scan1.nextLine(); t[i].temperature = Double.parseDouble(scan2.nextLine()); } } catch (FileNotFoundException e) { e.printStackTrace(); } } private static void printData(Temperature[] t){ for (int i = 0; i < 365; i++) { System.out.println("Day : " + t[i].day + " Temperature : " + t[i].temperature); } } private static Temperature findLargest(Temperature[] t){ Temperature largest = new Temperature(); for (int i = 0; i < 365; i++) { if (t[i].temperature > largest.temperature){ largest = t[i]; } } return largest; } private static Temperature findLargest(String month, Temperature[] t){ Temperature largest = new Temperature(); for (int i = 0; i < 365; i++) { if (t[i].day.split(" ")[0].equals(month)){ if (t[i].temperature > largest.temperature){ largest = t[i]; } } } return largest; } @Override public int compareTo(Temperature o) { return Double.compare(this.temperature, o.temperature); } }
// code ends here