Java字典从字典文件中读取
问题描述:
我无法将字典文件与字典进行比较。我在每一个打印语句,它正在正确阅读字典文件,它也正确计算所有的字形但它不会计算字典文件中的字形。我很确定这是非常小的事情,如果有人可以修复它,将不胜感激。Java字典从字典文件中读取
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Anagram3
{
static int size;
static int count;
static char[] charArray;
static char[] words;
public static void main(String[] args) throws IOException
{
Scanner sc = new Scanner(System.in);
System.out.println("Type the path of the dictionary to read from : ");
String fileName = sc.nextLine();
List<String> dictionary = new ArrayList<String>();
BufferedReader br = null;
try
{
br = new BufferedReader(new FileReader(fileName));
String word;
while((word = br.readLine())!=null)
{
dictionary.add(word);
}
}
catch(IOException e)
{
e.printStackTrace();
}
String[] words = new String[dictionary.size()];
dictionary.toArray(words);
//for(int i = 0; i < words.length; i++)
// System.out.println(words[i]);
System.out.println("\nEnter the phrase to scramble: ");
String input = sc.nextLine();
System.out.println();
size = input.length();
count = 0;
charArray = new char[size];
for (int j = 0; j < size; j++)
charArray[j] = input.charAt(j);
doAnagram(size);
}
public static void doAnagram(int newSize)
{
int limit;
if (newSize == 1) // if too small, return;
return;
// for each position,
for (int i = 0; i < newSize; i++) {
doAnagram(newSize - 1); // anagram remaining
if (newSize == 2) // if innermost,
printAnagrams();
rotate(newSize); // rotate word
}
}
public static void rotate(int newSize)
{
int i;
int position = size - newSize;
char temp = charArray[position];
for (i = position + 1; i < size; i++)
charArray[i - 1] = charArray[i];
charArray[i - 1] = temp;
}
public static void printAnagrams()
{
for (int i = 0; i < size; i++)
{
//System.out.print(charArray[i]);
if(charArray[i] == words[i])
{
System.out.print(charArray[i]);
}
}
System.out.println();
}
}
答
的另一个问题是,您比较产生在你的字典中的第i个元素,当你真正(大概)要测试的第i个字谜,如果第i字谜存在于字典在任何位置。
您可以尝试使用字符串的一个HashSet小时,而不是阵列,为字典,然后检查字谜的有效性与h.contains(...)。
(1)请检查粘贴代码,它看起来很滑稽在中间。 (2)你有没有检查过你产生的排列在字典中? – 9000
是的,这就是我在if语句的printAnnagrams()语句中所做的,这就是我遇到的问题。抱歉,这是我第一次做这个,看起来有趣吗? – user1022969
嗯,'if(charArray [i] == words [i])'甚至不应该编译,比较'char'和'String'。如果它编译,它不应该评估为“真”。 –