В настоящее время я пытаюсь написать этот код и не могу понять, почему мой файл, common-dictionary.txt
, не будет читать. Он имеет простые имена, например, "aaron" и "address", но главная проблема в том, что он просто не обнаруживает это. Он всегда заканчивается словом «слово не найдено в словаре», даже если оно существует в файле common-dictionary.txt
. Любая помощь будет оценена.
Вот код на данный момент:
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
import java.util.ArrayList;
import java.util.Collections;
public class Project_12 {
public static void main(String[] args) throws FileNotFoundException, IOException {
String prompt = "Enter a word or 'quit' to stop: ";
ArrayList<String> personalDictionary = new ArrayList<String>();
ArrayList<String> commonDictionary = new ArrayList<String>();
// Construct a Scanner to read user input from the keyboard.
Scanner keyboard = new Scanner(System.in);
System.out.println("Spell Checker");
System.out.println("-------------");
// Perform a priming read to get the first word.
System.out.print(prompt);
String word = keyboard.nextLine().toLowerCase();
// Enter the user input loop.
while (!word.equals("quit")) {
// Check if the word is in either dictionary.
if (checkSpelling(word, personalDictionary, commonDictionary)) {
System.out.println("The word is spelled correctly.");
}
else {
System.out.println("The word was not found in the dictionary.");
System.out.println("Would you like to add it to your personal dictionary (yes/no)?");
String response = keyboard.nextLine().toLowerCase();
if (response.equalsIgnoreCase("yes")) {
word.toLowerCase();
personalDictionary.add(word);
Collections.sort(personalDictionary);
System.out.println("Word added. Enter a word to 'quit' to stop");
}
}
// Get the next word from the user.
System.out.println();
System.out.print(prompt);
word = keyboard.nextLine().toLowerCase();
}
keyboard.close();
System.out.println("Goodbye!");
}
public static ArrayList<String> readFile() throws FileNotFoundException {
Scanner scan = new Scanner(new File("common-dictionary.txt"));
ArrayList<String> commonFile = new ArrayList<String>();
while(scan.hasNextLine());
{
commonFile.add(scan.nextLine());
}
scan.close();
return commonFile;
}
// Return true if word is in either array; otherwise, return false. Note
// that the arrays are sorted, so binary search can be used.
public static boolean checkSpelling(String word, ArrayList<String> personal, ArrayList<String> common) {
if (Collections.binarySearch(common, word.toLowerCase()) >= 0) {
return true;
}
if (Collections.binarySearch(personal, word.toLowerCase()) >= 0) {
return true;
}
return false;
}
// Write the nonempty elements of an oversize array to a given file.
public static void writeFile(ArrayList<String> personal)
throws FileNotFoundException {
PrintWriter writer = new PrintWriter("personal-dictionary.txt");
Collections.sort(personal);
int length = personal.size();
for (int i = 0; i < length; ++i) {
writer.write(personal.get(i));
}
// Close the file; otherwise, the contents will be lost.
writer.close();
}
}