I'm not sure if I'm not entering my code the right way, or where the error in my actual code is. I'm relatively new to "try" "catch" and when I run the coverage of my code in Java it shows that after I enter the inputted string it goes straight to the error. Their is more than one class for this code's purpose but the code doesn't run through all of the classes before the error. The purpose of the code is to enter information about students and through the code determine if they match together. This class specifically is the main class of the program. The problem comes when i enter a string like "Abey," and I'll get the error.
ERROR: Please give the student name: Abey java.io.FileNotFoundException: Abey (The system cannot find the file specified)
MY CODE
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.NoSuchElementException;
import java.util.Scanner;
public class Match {
public static void main(String[] args) {
Student[] arr = new Student[100];
System.out.println("Please give the student name: ");
Scanner input = new Scanner(System.in);
String filename = input.next();
Scanner nameInput;
try {
nameInput = new Scanner(new FileReader(filename));
int i = 0;
while (nameInput.hasNextLine()) {
Scanner ab = new Scanner(nameInput.nextLine());
ab.useDelimiter("[\t-]");
String name = ab.next();
String gender = ab.next();
String date = ab.next();
Scanner birthDateReader = new Scanner(date);
birthDateReader.useDelimiter("-");
int month = birthDateReader.nextInt();
int day = birthDateReader.nextInt();
int year = birthDateReader.nextInt();
int quietTime = ab.nextInt();
int music = ab.nextInt();
int reading = ab.nextInt();
int chatting = ab.nextInt();
Date birthdate = new Date(month, day, year);
Preference pref = new Preference(quietTime, music, reading, chatting);
Student studentAdd = new Student(name, gender.charAt(0), birthdate, pref);
arr[i++] = studentAdd;
}
int max = i;
for (i = 0; i < max; i++) {
if (!arr[i].getMatch()) {
int bestScore = 0;
int bestMatch = 0;
for (int j = i + 1; j < max; j++) {
if (!arr[j].getMatch()) {
int tmp = arr[i].compare(arr[j]);
if (tmp > bestScore) {
bestScore = tmp;
bestMatch = j;
}
}
}
if (bestScore != 0) {
arr[i].setMatched(true);
arr[bestMatch].setMatched(true);
System.out.println(arr[i].getName() + " can match with " + arr[bestMatch].getName() + " with the score " + bestScore);
} else
if (!arr[i].getMatch())
System.out.println(arr[i].getName() + " Does not have any matches.");
}
}
input.close();
} catch (NoSuchElementException e) {
System.out.println(e);
} catch (FileNotFoundException e) {
System.out.println(e);
}
}
}