Dies ist eines meiner Hausaufgaben Probleme, wo ich die Nummer 8675309 in einer Textdatei mit 1000000 Elemente finden muss. Ich bin verwirrt, wie man die lineare Suche verwendet, damit dies funktioniert. Auch muss meine Textdatei, die in meinen Java-Ordner geht, csc210hw5A-datafile genannt werden?Lineare Suche Hausaufgaben mit Textdatei
import java.util.Scanner;
import java.util.NoSuchElementException;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
public class SKELcsc210hw5A {
// linearSearch: return index of matching element.
// If not found, return -1.
private static int linearSearch(int[] arr, int N, int query) {
int idx = -1;
for(int i = 0; i < N; i++){
if(arr[i]==query);{
//stuck here
}
}
return idx;
}
private static int[] loadFile(String fileName) {
int[] vals = null;
int sz = -1;
try {
Scanner sc = new Scanner(new FileInputStream(fileName));
if(sc.hasNextInt())
sz = sc.nextInt();
if (sz < 0) {
System.out.println("File not the right format!");
return vals;
}
vals = new int[sz];
for(int ii = 0; ii < sz; ii++) {
vals[ii] = sc.nextInt();
}
} catch (FileNotFoundException excptn) {
System.out.println(excptn.getMessage());
} catch (NoSuchElementException excptn) {
System.out.println("Unexpected end of file!");
vals = null;
}
return vals;
}
public static void main (String[] args) {
String fName = "csc210hw5A-datafile.txt";
if(args.length > 0) {
fName = args[0];
}
int[] values;
System.out.println("Loading... " + fName);
if((values = loadFile(fName)) == null) {
System.out.println("Failed to read " + fName + ": Exiting.");
return;
}
System.out.println("Loaded " + fName + " successfully.");
int query = 8675309;
if(args.length > 1) {
query = Integer.parseInt(args[1]);
}
System.out.println("Query to search: " + query);
System.out.println("Total elements to search: " + values.length);
int idx = linearSearch(values, values.length, query);
if(idx != -1)
System.out.println("Query found on line " + (idx+1));
else
System.out.println("Query not found");
}
}
Alles nach loadFile ist abgeschlossen.
Sie haben ein falsches ';' nach dem 'if', aber ich bin neugierig, warum Sie fragen, wie man den Dateinamen ändert, obwohl das' '' '' eine Falle von Ihrem Lehrer ist, und die Dateinamensfrage stammt auch von Ihrem Lehrer, wenn er den Code liest, um zu verstehen, wie man ihn ändert. –
Ich würde vorschlagen, dass Sie die Grundlagen der linearen Suche sowie Datei-Reader lesen. –