Please fix the java code (using eclipse) package hw4p1; import java.io.BufferedR
ID: 3921025 • Letter: P
Question
Please fix the java code (using eclipse)
package hw4p1;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class MeanMedianHWv2 {
public static void main(String[] args) throws IOException {
String[] arrDate = { "", "", "","" };
Scanner in = new Scanner(System.in);
Boolean day = true;
// Year
do
{
System.out.println("Enter a year (2016)");
arrDate[0] = in.next();
if (!arrDate[0].equalsIgnoreCase("2016"))
{
System.out.println("Wrong Input. '2016' only! Try again.");
}
else
{
arrDate[0] = "2016";
}
} while(!arrDate[0].equalsIgnoreCase("2016"));
// Month
do
{
System.out.println("Enter a month (01)");
arrDate[1] = in.next();
if (!arrDate[1].equalsIgnoreCase("01"))
{
System.out.println("Wrong Input. '01' only! Try again!");
}
else
{
arrDate[1] = "01";
}
} while(!arrDate[1].equalsIgnoreCase("01"));
// Day
do
{
System.out.println("Enter a Day (04-10)");
arrDate[2] = in.next();
//if (arrDate[2] > 10 || arrDate[2] < 4)
if (!arrDate[2].equalsIgnoreCase("04"))
{
System.out.println("Wrong Inpit. '04' - '10' only! Try again!");
}
//else if (arrDate[2] == 4)
else if (!arrDate[2].equalsIgnoreCase("05"))
{
System.out.println("Error! Invalid day. Try again!");
}
else if (!arrDate[2].equalsIgnoreCase("06"))
{
System.out.println("Error! Invalid day. Try again!");
}
else if (!arrDate[2].equalsIgnoreCase("07"))
{
System.out.println("Error! Invalid day. Try again!");
}
else if (!arrDate[2].equalsIgnoreCase("08"))
{
System.out.println("Error! Invalid day. Try again!");
}
else if (!arrDate[2].equalsIgnoreCase("09"))
{
System.out.println("Error! Invalid day. Try again!");
}
else if (!arrDate[2].equalsIgnoreCase("10"))
{
System.out.println("Error! Invalid day. Try again!");
}
else
{
arrDate[2] = "04";
day = false;
arrDate[2] = "05";
day = false;
arrDate[2] = "06";
day = false;
arrDate[2] = "07";
day = false;
arrDate[2] = "08";
day = false;
arrDate[2] = "09";
day = false;
arrDate[2] = "10";
day = false;
}
} while (day);
do {
System.out.println("which data? 'w' for wind, 'b' for baro pressure, 't' for temp");
arrDate[3] = in.next();
if (!arrDate[3]. equalsIgnoreCase ("w") && !arrDate[3].equalsIgnoreCase("b") && !arrDate[3].equalsIgnoreCase("t"))
{
System.out.println("Wrong input. 'w' / 'b' / 't' only! Try again");
}
//while(!arrDate[2].equalsIgnoreCase("04") && !arrDate[2].equalsIgnoreCase("05") && !arrDate[2].equalsIgnoreCase("05"));
if (arrDate[3].equalsIgnoreCase("w"))
{
System.out.println("w");
}
else if (arrDate[3].equalsIgnoreCase("b"))
{
System.out.println("b");
}
else if (arrDate[3].equalsIgnoreCase("t"))
{
System.out.println("t");
}
} while (!arrDate[3].equalsIgnoreCase("w") && !arrDate[3].equalsIgnoreCase("b") && !arrDate[3].equalsIgnoreCase("t"));
in.close();
String Date = arrDate[0] + "_" + arrDate[1] + "_" + arrDate[2];
System.out.println("------------------------------------");
System.out.println("What you typed in is below");
System.out.println("Date" + Date);
System.out.println("Date :" + arrDate[3]);
System.out.println("-----------------------------------");
if (arrDate[3].equalsIgnoreCase("w"))
{
ArrayList<Double> windGust = getWindData(Date.arrDate);
System.out.println("Wind Gust");
System.out.println(" Results of" + Date + "");
System.out.println("mean :" + mean(windGust));
System.out.println("Median: " + median(windGust));
System.out.println("-----------------------------------");
}
else {arrDate[3].equalsIgnoreCase("b");
{
ArrayList<Double> pressure = getPData(Date, arrDate);
System.out.println("Pressure");
System.out.println(" Results of" + Date + "");
System.out.println("mean :" + mean(pressure));
System.out.println("Median: " + median(pressure));
System.out.println("-----------------------------------");
}
else
{
ArrayList<Double> airTemp = getTdata(Date, arrDate);
System.out.println("Temperature");
System.out.println(" Results of" + Date + "");
System.out.println("mean :" + mean(airTemp));
System.out.println("Median: " + median(airTemp));
System.out.println("-----------------------------------");
}
System.out.println("Printing all data");
ArrayList<String>weaData = getAllData(Date, arrDate);
displayData(weaData);
}
// System.out.println("Sll Data");
// System.out.println(" Results of" + Date + "");
// else
// {
// ArrayList<Double> tempData = getbaroData(arrDate);
// }
//ArrayList<Double> barodata = getbaroData(arrDate);
//ArrayList<Double> airTemp = getData("Air_Temp", arrDate);
//ArrayList<Double> pressure = getData("Barometric_Press", arrDate);
// System.out.println("Gust: mean " + mean(windGust) + ", median " + median(windGust));
// //System.out.println("Temp: mean " + mean(airTemp) + ", median " + median(airTemp));
// //System.out.println("Pressure: mean " + mean(pressure) + ", median " + median(pressure));
//
// displayData(weaData);
// }
// GEtting wind data
public static ArrayList<Double> getWindData(String Date, String [] arrDt) throws NumberFormatException, IOException {
// construct the url if necessary
//URL dataSource = new URL("https://lpo.dt.navy.mil/data/DM/" + arrDt[0] + "/" + arrDt[0] + "_" + arrDt[1] + "_" + arrDt[2] + "/" + label);
//URL url = new URL("http://umd-fmis.d.umn.edu/cpblee/weather.txt");
//URL url = new URL("http://umd-fmis.d.umn.edu/cpblee/data/2016/2016_01_04/2016_01_04.txt");
String newurl = "http://umd-fmis.d.umn.edu/cpblee/data/" + Date + "/" + Date + ".txt";
System.out.println("Searching " + newurl);
URL url = new URL(newurl);
//URL url = new URL("http://umd-fmis.d.umn.edu/cpblee/data/" + arrDt[0] + "/" + arrDt[0] + "_" + arrDt[1] + "_" + arrDt[2] +"/" + arrDt[0] + "_" + arrDt[1] + "_" + arrDt[2] +".txt/");
BufferedReader buffer = new BufferedReader(new InputStreamReader(url.openConnection().getInputStream()));
// get wind gust data
ArrayList<Double> windData = new ArrayList<Double>();
String inputLine;
while ((inputLine = buffer.readLine()) != null) {
windData.add(Double.parseDouble(inputLine.substring(20,22)));
}
buffer.close();
return windData;
}
// Getting temp data.
public static ArrayList<Double> gettempData(String[] arrDt) throws NumberFormatException, IOException {
// construct the url if necessary
//URL dataSource = new URL("https://lpo.dt.navy.mil/data/DM/" + arrDt[0] + "/" + arrDt[0] + "_" + arrDt[1] + "_" + arrDt[2] + "/" + label); URL url = new URL("http://umd-fmis.d.umn.edu/cpblee/data/" + arrDt[0] + "/" + arrDt[0] + "_" + arrDt[1] + "_" + arrDt[2] +".txt/");
URL url = new URL("http://umd-fmis.d.umn.edu/cpblee/data/" + arrDt[0] + "/" + arrDt[0] + "_" + arrDt[1] + "_" + arrDt[2] +"/" + arrDt[0] + "_" + arrDt[1] + "_" + arrDt[2] +".txt/");
BufferedReader buffer = new BufferedReader(new InputStreamReader(url.openConnection().getInputStream()));
// alternatively,
//BufferedReader data = new BufferedReader(new InputStreamReader(dataSource.openStream()));
// get wind gust data
ArrayList<Double> tempData = new ArrayList<Double>();
String inputLine;
while ((inputLine = buffer.readLine()) != null) {
tempData.add(Double.parseDouble(inputLine.substring(20)));
}
buffer.close();
return tempData;
}
// Getting Baro Data.
public static ArrayList<Double> getbaroData(String[] arrDt) throws NumberFormatException, IOException {
// construct the url if necessary
//URL dataSource = new URL("https://lpo.dt.navy.mil/data/DM/" + arrDt[0] + "/" + arrDt[0] + "_" + arrDt[1] + "_" + arrDt[2] + "/" + label); URL url = new URL("http://umd-fmis.d.umn.edu/cpblee/data/" + arrDt[0] + "/" + arrDt[0] + "_" + arrDt[1] + "_" + arrDt[2] +".txt/");
URL url = new URL("http://umd-fmis.d.umn.edu/cpblee/data/" + arrDt[0] + "/" + arrDt[0] + "_" + arrDt[1] + "_" + arrDt[2] +"/" + arrDt[0] + "_" + arrDt[1] + "_" + arrDt[2] +".txt/");
BufferedReader buffer = new BufferedReader(new InputStreamReader(url.openConnection().getInputStream()));
// alternatively,
//BufferedReader data = new BufferedReader(new InputStreamReader(dataSource.openStream()));
// get wind gust data
ArrayList<Double> baroData = new ArrayList<Double>();
String inputLine;
while ((inputLine = buffer.readLine()) != null) {
baroData.add(Double.parseDouble(inputLine.substring(20)));
}
buffer.close();
return baroData;
}
//GEtting all data
public static ArrayList<String> getAllData(String[] arrDt) throws NumberFormatException, IOException {
//URL dataSource = new URL("https://lpo.dt.navy.mil/data/DM/" + arrDt[0] + "/" + arrDt[0] + "_" + arrDt[1] + "_" + arrDt[2] + "/" + label);
//URL url = new URL("http://umd-fmis.d.umn.edu/cpblee/data/2016/2016_01_04/2016_01_04.txt");
//URL url = new URL("http://umd-fmis.d.umn.edu/cpblee/data/" + arrDt[0] + "/" + arrDt[0] + "_" + arrDt[1] + "_" + arrDt[2] +"/" + arrDt[0] + "_" + arrDt[1] + "_" + arrDt[2] +".txt");
URL url = new URL ("http://umd-fmis.d.umn.edu/cpblee/data/2016/ + arrData[0] + “_”+ arrDt[1]” + “_” + arrDt[2]+“/”+“ arrDt[0]” + “_”+ “arrDt[1]” + “_” + arrDt[2]+“.txt”");
// http://umd-fmis.d.umn.edu/cpblee/data/2016/2016_01_04/2016_01_04.txt
BufferedReader buffer = new BufferedReader(new InputStreamReader(url.openConnection().getInputStream()));
//BufferedReader data = new BufferedReader(new InputStreamReader(dataSource.openStream()));
// get date, time, and wind gust data (replicate data)
ArrayList<String> allData = new ArrayList<String>();
String inputLine;
while ((inputLine = buffer.readLine()) != null) {
allData.add(inputLine.substring(0));
}
buffer.close();
return allData;
}
public static void displayData(ArrayList<String> a) {
for (String s : a) {
System.out.println(s);
}
}
public static double mean(ArrayList<Double> a)
{
double sum = 0;
for (double i : a) {
sum += i;
}
return sum / a.size();
}
public static double median(ArrayList<Double> a)
{
Collections.sort(a);
if (a.size() / 2 * 2 == a.size()) {
return (a.get(a.size() / 2) + a.get(a.size() / 2 - 1)) / 2;
} else {
return a.get(a.size() / 2);
}
}
}
**** this is the error i am getting:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
arrDate cannot be resolved or is not a field
arrDate cannot be resolved to a variable
Syntax error on token "else", delete this token
arrDate cannot be resolved to a variable
arrDate cannot be resolved to a variable
Syntax error, insert "}" to complete Block
at hw4p1.MeanMedianHWv2.main(MeanMedianHWv2.java:153)
Explanation / Answer
There is a minor mistake in the else block you wrote. You just mistyped it seems. An open paranthesis ( should be there in the else if condition, but you used open braces { it seems. Here is the modificeation for you:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class MeanMedian {
public static void main(String[] args) throws IOException {
String[] arrDate = { "", "", "","" };
Scanner in = new Scanner(System.in);
Boolean day = true;
// Year
do
{
System.out.println("Enter a year (2016)");
arrDate[0] = in.next();
if (!arrDate[0].equalsIgnoreCase("2016"))
{
System.out.println("Wrong Input. '2016' only! Try again.");
}
else
{
arrDate[0] = "2016";
}
} while(!arrDate[0].equalsIgnoreCase("2016"));
// Month
do
{
System.out.println("Enter a month (01)");
arrDate[1] = in.next();
if (!arrDate[1].equalsIgnoreCase("01"))
{
System.out.println("Wrong Input. '01' only! Try again!");
}
else
{
arrDate[1] = "01";
}
} while(!arrDate[1].equalsIgnoreCase("01"));
// Day
do
{
System.out.println("Enter a Day (04-10)");
arrDate[2] = in.next();
//if (arrDate[2] > 10 || arrDate[2] < 4)
if (!arrDate[2].equalsIgnoreCase("04"))
{
System.out.println("Wrong Inpit. '04' - '10' only! Try again!");
}
//else if (arrDate[2] == 4)
else if (!arrDate[2].equalsIgnoreCase("05"))
{
System.out.println("Error! Invalid day. Try again!");
}
else if (!arrDate[2].equalsIgnoreCase("06"))
{
System.out.println("Error! Invalid day. Try again!");
}
else if (!arrDate[2].equalsIgnoreCase("07"))
{
System.out.println("Error! Invalid day. Try again!");
}
else if (!arrDate[2].equalsIgnoreCase("08"))
{
System.out.println("Error! Invalid day. Try again!");
}
else if (!arrDate[2].equalsIgnoreCase("09"))
{
System.out.println("Error! Invalid day. Try again!");
}
else if (!arrDate[2].equalsIgnoreCase("10"))
{
System.out.println("Error! Invalid day. Try again!");
}
else
{
arrDate[2] = "04";
day = false;
arrDate[2] = "05";
day = false;
arrDate[2] = "06";
day = false;
arrDate[2] = "07";
day = false;
arrDate[2] = "08";
day = false;
arrDate[2] = "09";
day = false;
arrDate[2] = "10";
day = false;
}
} while (day);
do {
System.out.println("which data? 'w' for wind, 'b' for baro pressure, 't' for temp");
arrDate[3] = in.next();
if (!arrDate[3]. equalsIgnoreCase ("w") && !arrDate[3].equalsIgnoreCase("b") && !arrDate[3].equalsIgnoreCase("t"))
{
System.out.println("Wrong input. 'w' / 'b' / 't' only! Try again");
}
//while(!arrDate[2].equalsIgnoreCase("04") && !arrDate[2].equalsIgnoreCase("05") && !arrDate[2].equalsIgnoreCase("05"));
if (arrDate[3].equalsIgnoreCase("w"))
{
System.out.println("w");
}
else if (arrDate[3].equalsIgnoreCase("b"))
{
System.out.println("b");
}
else if (arrDate[3].equalsIgnoreCase("t"))
{
System.out.println("t");
}
} while (!arrDate[3].equalsIgnoreCase("w") && !arrDate[3].equalsIgnoreCase("b") && !arrDate[3].equalsIgnoreCase("t"));
in.close();
String Date = arrDate[0] + "_" + arrDate[1] + "_" + arrDate[2];
System.out.println("------------------------------------");
System.out.println("What you typed in is below");
System.out.println("Date" + Date);
System.out.println("Date :" + arrDate[3]);
System.out.println("-----------------------------------");
if (arrDate[3].equalsIgnoreCase("w"))
{
ArrayList<Double> windGust = getWindData(Date.arrDate);
System.out.println("Wind Gust");
System.out.println(" Results of" + Date + "");
System.out.println("mean :" + mean(windGust));
System.out.println("Median: " + median(windGust));
System.out.println("-----------------------------------");
}
else if(arrDate[3].equalsIgnoreCase("b"))
{
ArrayList<Double> pressure = getPData(Date, arrDate);
System.out.println("Pressure");
System.out.println(" Results of" + Date + "");
System.out.println("mean :" + mean(pressure));
System.out.println("Median: " + median(pressure));
System.out.println("-----------------------------------");
}
else
{
ArrayList<Double> airTemp = getTdata(Date, arrDate);
System.out.println("Temperature");
System.out.println(" Results of" + Date + "");
System.out.println("mean :" + mean(airTemp));
System.out.println("Median: " + median(airTemp));
System.out.println("-----------------------------------");
}
System.out.println("Printing all data");
ArrayList<String>weaData = getAllData(arrDate);
displayData(weaData);
}
// System.out.println("Sll Data");
// System.out.println(" Results of" + Date + "");
// else
// {
// ArrayList<Double> tempData = getbaroData(arrDate);
// }
//ArrayList<Double> barodata = getbaroData(arrDate);
//ArrayList<Double> airTemp = getData("Air_Temp", arrDate);
//ArrayList<Double> pressure = getData("Barometric_Press", arrDate);
// System.out.println("Gust: mean " + mean(windGust) + ", median " + median(windGust));
// //System.out.println("Temp: mean " + mean(airTemp) + ", median " + median(airTemp));
// //System.out.println("Pressure: mean " + mean(pressure) + ", median " + median(pressure));
//
// displayData(weaData);
// }
// GEtting wind data
public static ArrayList<Double> getWindData(String Date, String [] arrDt) throws NumberFormatException, IOException {
// construct the url if necessary
//URL dataSource = new URL("https://lpo.dt.navy.mil/data/DM/" + arrDt[0] + "/" + arrDt[0] + "_" + arrDt[1] + "_" + arrDt[2] + "/" + label);
//URL url = new URL("http://umd-fmis.d.umn.edu/cpblee/weather.txt");
//URL url = new URL("http://umd-fmis.d.umn.edu/cpblee/data/2016/2016_01_04/2016_01_04.txt");
String newurl = "http://umd-fmis.d.umn.edu/cpblee/data/" + Date + "/" + Date + ".txt";
System.out.println("Searching " + newurl);
URL url = new URL(newurl);
//URL url = new URL("http://umd-fmis.d.umn.edu/cpblee/data/" + arrDt[0] + "/" + arrDt[0] + "_" + arrDt[1] + "_" + arrDt[2] +"/" + arrDt[0] + "_" + arrDt[1] + "_" + arrDt[2] +".txt/");
BufferedReader buffer = new BufferedReader(new InputStreamReader(url.openConnection().getInputStream()));
// get wind gust data
ArrayList<Double> windData = new ArrayList<Double>();
String inputLine;
while ((inputLine = buffer.readLine()) != null) {
windData.add(Double.parseDouble(inputLine.substring(20,22)));
}
buffer.close();
return windData;
}
// Getting temp data.
public static ArrayList<Double> gettempData(String[] arrDt) throws NumberFormatException, IOException {
// construct the url if necessary
//URL dataSource = new URL("https://lpo.dt.navy.mil/data/DM/" + arrDt[0] + "/" + arrDt[0] + "_" + arrDt[1] + "_" + arrDt[2] + "/" + label); URL url = new URL("http://umd-fmis.d.umn.edu/cpblee/data/" + arrDt[0] + "/" + arrDt[0] + "_" + arrDt[1] + "_" + arrDt[2] +".txt/");
URL url = new URL("http://umd-fmis.d.umn.edu/cpblee/data/" + arrDt[0] + "/" + arrDt[0] + "_" + arrDt[1] + "_" + arrDt[2] +"/" + arrDt[0] + "_" + arrDt[1] + "_" + arrDt[2] +".txt/");
BufferedReader buffer = new BufferedReader(new InputStreamReader(url.openConnection().getInputStream()));
// alternatively,
//BufferedReader data = new BufferedReader(new InputStreamReader(dataSource.openStream()));
// get wind gust data
ArrayList<Double> tempData = new ArrayList<Double>();
String inputLine;
while ((inputLine = buffer.readLine()) != null) {
tempData.add(Double.parseDouble(inputLine.substring(20)));
}
buffer.close();
return tempData;
}
// Getting Baro Data.
public static ArrayList<Double> getbaroData(String[] arrDt) throws NumberFormatException, IOException {
// construct the url if necessary
//URL dataSource = new URL("https://lpo.dt.navy.mil/data/DM/" + arrDt[0] + "/" + arrDt[0] + "_" + arrDt[1] + "_" + arrDt[2] + "/" + label); URL url = new URL("http://umd-fmis.d.umn.edu/cpblee/data/" + arrDt[0] + "/" + arrDt[0] + "_" + arrDt[1] + "_" + arrDt[2] +".txt/");
URL url = new URL("http://umd-fmis.d.umn.edu/cpblee/data/" + arrDt[0] + "/" + arrDt[0] + "_" + arrDt[1] + "_" + arrDt[2] +"/" + arrDt[0] + "_" + arrDt[1] + "_" + arrDt[2] +".txt/");
BufferedReader buffer = new BufferedReader(new InputStreamReader(url.openConnection().getInputStream()));
// alternatively,
//BufferedReader data = new BufferedReader(new InputStreamReader(dataSource.openStream()));
// get wind gust data
ArrayList<Double> baroData = new ArrayList<Double>();
String inputLine;
while ((inputLine = buffer.readLine()) != null) {
baroData.add(Double.parseDouble(inputLine.substring(20)));
}
buffer.close();
return baroData;
}
//GEtting all data
public static ArrayList<String> getAllData(String[] arrDt) throws NumberFormatException, IOException {
//URL dataSource = new URL("https://lpo.dt.navy.mil/data/DM/" + arrDt[0] + "/" + arrDt[0] + "_" + arrDt[1] + "_" + arrDt[2] + "/" + label);
//URL url = new URL("http://umd-fmis.d.umn.edu/cpblee/data/2016/2016_01_04/2016_01_04.txt");
//URL url = new URL("http://umd-fmis.d.umn.edu/cpblee/data/" + arrDt[0] + "/" + arrDt[0] + "_" + arrDt[1] + "_" + arrDt[2] +"/" + arrDt[0] + "_" + arrDt[1] + "_" + arrDt[2] +".txt");
URL url = new URL ("http://umd-fmis.d.umn.edu/cpblee/data/2016/ + arrData[0] + “_”+ arrDt[1]” + “_” + arrDt[2]+“/”+“ arrDt[0]” + “_”+ “arrDt[1]” + “_” + arrDt[2]+“.txt”");
// http://umd-fmis.d.umn.edu/cpblee/data/2016/2016_01_04/2016_01_04.txt
BufferedReader buffer = new BufferedReader(new InputStreamReader(url.openConnection().getInputStream()));
//BufferedReader data = new BufferedReader(new InputStreamReader(dataSource.openStream()));
// get date, time, and wind gust data (replicate data)
ArrayList<String> allData = new ArrayList<String>();
String inputLine;
while ((inputLine = buffer.readLine()) != null) {
allData.add(inputLine.substring(0));
}
buffer.close();
return allData;
}
public static void displayData(ArrayList<String> a) {
for (String s : a) {
System.out.println(s);
}
}
public static double mean(ArrayList<Double> a)
{
double sum = 0;
for (double i : a) {
sum += i;
}
return sum / a.size();
}
public static double median(ArrayList<Double> a)
{
Collections.sort(a);
if (a.size() / 2 * 2 == a.size()) {
return (a.get(a.size() / 2) + a.get(a.size() / 2 - 1)) / 2;
} else {
return a.get(a.size() / 2);
}
}
}
And may be you tried some methods which are not here it seems. Anyways, if you still need any refinements, just get back to me.