该文件位于源代码所在的根目录中。还有一个数字贴在路径变量的末尾会搞砸,或者你会怎么做?
有10个文件可供选择,它们都有相似的名称,但以不同的数字结尾。所以我考虑使用默认路径变量然后将数字附加到它然后执行文件名文件=新文件(路径+年+“。txt”)
知道为什么不提起它?
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.InputMismatchException;
import java.util.Scanner;
public class nameRanker {
public static void main(String[] args) throws Exception {
int skip = 0;
int rank = 0;
int year = 0;
char gender = '0';
String name = "";
String compareName = "";
Boolean found = false;
Scanner input = new Scanner(System.in);
System.out.print("Enter the year: "); //try to catch mismatched input here (0-10)
try { year = input.nextInt();
System.out.print("\nEnter the gender: "); //try to catch mismatched input here (M or F)
gender = input.next().charAt(0);
System.out.print("\nEnter the name: "); //try to catch mismatched input here (no #)
name = input.next();
}
catch (InputMismatchException e) {
e.printStackTrace();
System.err.println("Entered value does not match expected value. \n(Year must be integer, gender M or F, and name must be a string.)");
}
String path = "\\BabynamesrankingFiles\\Babynamesranking";
File nameFile = new File(path + year + ".txt"); //throws IOexception if not found
//Scanner readFile = null;
try (Scanner readFile = new Scanner(nameFile)){
//readFile = new Scanner(nameFile);
if(nameFile.canRead()){ //if the file is readable
while(readFile.hasNext() && !found){ //while data in file
if(gender == 'M'){ //if male only parse first two values
rank = readFile.nextInt(); //store rank
compareName = readFile.next(); //grab name to compare
found = (compareName == name) ? true : false; //if name found break while loop
}
if(gender == 'F'){
rank = readFile.nextInt(); //store the rank
compareName = readFile.next(); //store the boy name
skip = readFile.nextInt(); //store the total names value even though unused
compareName = readFile.next(); //store the girl name to compare
found = (compareName == name) ? true : false; //if name found break while loop
}
} //end while loop
if(!found){ //if name not found
System.out.println("The name " + name + "is not ranked in year " + year);
}
else{
System.out.println("The name " + name + " is ranked " + rank + " in the year " + year);
}
}
}
catch(IOException ex){
System.out.println("Error could not open file, check file path.");
}
finally {
input.close(); //close scanner
}
}
}