Question & Answer: ain one (double) per line. You are to read in one day and one temp, and make a Temperature object…..

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

Still stressed from student homework?
Get quality assistance from academic writers!