Ich erstelle ein Programm für eine Klasse, die eine CSV-Datei einliest und verschiedene mathematische Gleichungen für die in der Datei angegebenen Daten erstellt. Die CSV-Datei ist in der ein:Während Schleifenproblem für einen Dateileser?
- longitude1, latitude1 timestamp1
- longitude2, latitude2, timestamp2
- longitude3, latitude3, timeStamp3
(und für ungefähr auf weiter 100 verschiedene Koordinaten).
Im Moment konzentriere ich mich auf die Längenwerte --- Ich habe Schwierigkeiten, meine while-Schleife zu bekommen, um die Operationen auszuführen, die ich auch brauche. Ich muss in der Lage sein, das Programm dazu zu bringen, longitude2 von longitude1 zu subtrahieren (wo sich lon1 und lon2 ändern, während wir durch die Schleife gehen ... und schließlich jede Koordinate durchlaufen).
Das Problem, das ich habe, ist, dass die Schleife keine "Überlappung" (aus Mangel an besseren Begriff) erstellt. Es führt die Mathematik an den ersten zwei Koordinaten durch und springt dann zu den nächsten zwei ... und überspringt so jede andere Operation.
[dh: die Schleife durchführen: LON2 - LON1 und lon4-lon3 aber das Überspringen lon3-LON2]
Ich habe das Gefühl, dass mein Problem zu Beginn meiner while-Schleife liegt, aber ich ehrlich don‘ Ich weiß, wie ich es beheben kann. Ich würde etwas Hilfe lieben. Unten ist der Code, den ich derzeit haben:
import java.io.*;
import java.util.*;
public class SearchAndR {
public static void main(String[] args) throws FileNotFoundException {
// creates a Scanner called "keyboard" to read in the file name
Scanner keyboard = new Scanner(System.in);
// prompts user for file name
System.out.println("Enter the name of the file you intend to read in");
// Stores file name as a string so that we may read it in
String file = keyboard.nextLine();
// creates a new Scanner called fr(short for filereader) so we can read
// in the file
// then we create a File object using the constructor new with the class
// "File"
// this takes in our string "file" as a parameter to read it in
// reading in our file object to the scanner
Scanner fr = new Scanner(new File(file));
// Creating format for hike1.csv file
System.out.println("--- Hike Analysis ---");
System.out.println("File: " + file);
// Calling HW4 Class to use in the rest of the program
HW4Util util = new HW4Util();
// Establishing counting variable for distance for the while loop
double totaldistance = 0;
while (fr.hasNextLine()) {
String line = fr.nextLine();
String[] stamp1 = line.split(",");
String line2 = fr.nextLine();
String[] stamp2 = line2.split(",");
double lon1 = Double.parseDouble(stamp1[0]);
double lat1 = Double.parseDouble(stamp1[1]);
String time1 = (stamp1[2]);
double lon2 = Double.parseDouble(stamp2[0]);
double lat2 = Double.parseDouble(stamp2[1]);
String time2 = (stamp2[2]);
// This is just to check to see if the overlap is occurring!
// This should not be included in the project.
System.out.println("this is longitude" +lon1);
System.out.println("this is longitude" +lon2);
// returns the distance between two coordinates as a fraction of a
// mile
double dist = util.distance(lat1, lon1, lat2, lon2);
totaldistance = totaldistance + dist;
totaldistance = (double) (Math.round(totaldistance * 10000))/10000;
}
System.out.println("Total distance traveled: " + totaldistance + " miles");
} // end method main
} // end class filereader