I am doing a homework assignment for a class, and am looking for some helpful pointers, not full solutions. Basically, I have to write a Java program that reads in a text file a
Highest Seen So Far: -Infinity
(or any really low number so that any number you see next will be higher)
Lowest Seen So Far: Infinity
(or any really high number so that any number you see next will be lower)
Walk through each data point "d":
is d higher than your latest "highest seen so far"?
-> if yes, your new highest seen so far is now d
is d lower than your latest "lowest seen so far"?
-> if yes, your new lowest seen so far is now d
Your highest seen so far is now the highest data point
Your lowest seen so far is now the lowest data point
In pseudocode:
highest = -inf
lowest = inf
for d in dataset:
if d > highest:
highest = d
if d < lowest:
lowest = d
print "highest: " + highest
print "lowest: " + lowest
here is an example
let's say your dataset is 5 2 8 4
Step 0
Highest: -inf
Lowest: inf
Step 1
See d = 5...that's higher than highest -inf, so new highest is 5.
See d = 5...that's lower than lowest -inf, so new lowest is 5
Highest: 5
Lowest: 5
Step 2:
See d = 2...that's not higher than highest 5...highest is still 5
See d = 2...that is lower than lowest 5...new lowest is 2
Highest: 5
Lowest: 2
Step 3:
See d = 8...that's higher than highest 5...new highest is 8
See d = 8...that's not lower than lowest 2...lowest is still 2
Highest: 8
Lowest: 2
Step 4:
See d = 4...that's not higher than highest 8...highest is still 8
See d = 4...that's not lower than lowest 2...lowest is still 2
Highest: 8
Lowest: 2
Result:
Highest: 8
Lowest: 2
You need to use a few variables to keep track of the min and max temp.
Every time a higher (lower) temp comes along you update the variables.
Ok start with very high max and very low min outside the loop.
As soon as you see a (higher) lower temp inside the loop you adjust the vars.
After the loop you recap.
Here is a way to do it:
String tempList; //Create string variable named tempList
int lineCount = 0; //Create integer variable named lineCount
String sep = ": Temp "; //Create string variable named sep (short for separation) and set it equal to the literal string ":"
String space = " "; //Create string variable named space and set it equal to an actual space between texts
String maxValueYear = "";
String minValueYear = "";
double maxValue = 0;
double minValue = Double.MAX_VALUE;
System.out.println("The following is the provided information from the file input. ");
while ((tempList = kb.readLine()) !=null) { //while loop stating that as long as the text file still has values to read (is not null), continue to execute
String year = tempList.substring(0, tempList.indexOf(space));
double temp = Double.valueOf(tempList.substring(tempList.indexOf(space), tempList.length()));
if (temp > maxValue) {
maxValue = temp;
maxValueYear = year;
}
if (temp < minValue) {
minValue = temp;
minValueYear = year;
}
System.out.println("Line " + lineCount++ + ": Year " + tempList.replace(space, sep)); //Prints out the line number (lineCount++), the info from the temps.txt file with a ":" between the year and the number (tempList.replace (space,sep)
}
System.out.println("The minimum temp occured in year " + minValueYear + " and was " + minValue);
System.out.println("The maximum temp occured in year " + maxValueYear + " and was " + maxValue);