我正在上课的作业,正在寻找一些有用的指示,而不是完整的解决方案。基本上,我必须编写一个Java程序,该程序读取一个文本文件并逐行列出信息,列出行号,最后打印出最大值和最小值以及与每个值相关的年份。文本文件包含一年和该年的温度。因此,它列出了类似“ 1900 50.9”的内容。我不是要使用数组或扫描仪,这是分配的一部分。我已经能够成功地使程序逐行打印并逐行打印出相应的温度。有人告诉我,我确实使用了while循环。现在,我唯一的问题是以某种方式可以区分所有温度的方式访问文本文件,最大值和最小值,以及每个年份发生的年份。到目前为止,我一直没有寻求帮助,因为我希望自己自行解决,但这项工作不再值得任何功劳到后期罚款。任何帮助将不胜感激,因为我仍然想解决这个问题。谢谢。
这就是我所拥有的。
public class main { /** * @param args the command line arguments */ public static void main(String[] args) throws Exception { File temps = new File ("temps.txt"); //Creates path to temps.txt file FileReader textReader = new FileReader (temps); //Input information from temps.txt file into file reader BufferedReader kb = new BufferedReader (textReader); //Use buffered reader to hold temps.txt file info from the file reader 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 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 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) } }
}
到目前为止的输出是这样的:
Line 0: Year 1900: Temp 50.9 Line 1: Year 1901: Temp 49 Line 2: Year 1902: Temp 49.7 Line 3: Year 1903: Temp 49.5 Line 4: Year 1904: Temp 47.1 Line 5: Year 1905: Temp 49.1
等等…
Line 99: Year 1999: Temp 52.7 BUILD SUCCESSFUL (total time: 0 seconds)
这是一种实现方法:
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);