我正在为学校做一个项目,要求我通过以下步骤编写一个anagram finder:
编写一个方法,将字典文件中的单词(只是常规文本文件)读入字符串数组
编写一个为单词创建字母数组的方法(每个数组应该有26个元素;第k个元素表示单词中第k个字母出现在单词中的次数)
编写一个比较两个字母数数组以进行完全匹配的方法
对于词典中的每个单词,生成一个字母计数数组,将其与目标单词的字母计数数组进行比较,如果匹配则打印出单词。
我的代码编译但没有打印出任何内容,我做错了什么?
import java.io.*;
import java.util.Scanner;
import java.util.List;
import java.util.ArrayList;
public class Anagram
{
static String[] words;
public static String[] readFile(String pathName){
List <String> dictionary = new ArrayList<String>();
try {
Scanner sc = new Scanner(new File(pathName));
while (sc.hasNextLine()){
dictionary.add(sc.nextLine());
}
}
catch (FileNotFoundException ex){
System.out.println("*** Cannot open " + pathName + " ***");
System.exit(1);
}
words = new String[dictionary.size()];
dictionary.toArray(words);
return words;
}
public static int[] letterCount(String str){
int[] count = new int[26];
for(int i = 0; i< str.length(); i++){
char ch = str.charAt(i);
int value = (int) ch;
if (value >= 97 && value <= 122){
count[ch - 'a']++;
}
}
return count;
}
public static boolean sameChar (String firstStr, String secondStr){
if(firstStr.length() != secondStr.length())
return false;
int[] a = letterCount(firstStr);
int[] b = letterCount(secondStr);
return (a == b);
}
public static void main(String[] args) {
// TODO code application logic here
System.out.println("Enter target word: ");
Scanner scanner = new Scanner(System.in);
String targetWord = scanner.nextLine();
readFile("words.txt");
for(String word: words) {
if(sameChar(word, targetWord) == true){
System.out.println(word + " ");
}
}
}
}