import java.io.*;
import java.util.*;
public class Dictionary
{
protected static int line_number = 0;
public static void main(String[] args)
{
List<Dict> my_collection = new ArrayList<Dict>();
List<Dict> search_term = new ArrayList<Dict>();
File filename = new File("dict.txt");
try
{
Scanner data_store = new Scanner(filename);
Scanner keyboard = new Scanner(System.in);
while(data_store.hasNextLine())
{
String word = data_store.nextLine();
Dict m = new Dict(word);
my_collection.add(m);
line_number++;
}
System.out.println(my_collection.size() + " words were loaded.");
System.out.println("What word are you looking for?");
String find_word = keyboard.nextLine();
while(!(find_word.equals("no")))
{
Dict n = new Dict(find_word);
for(line_number = 0; line_number < my_collection.size(); line_number++)
{
if(my_collection.get(line_number).equals(n))
{
System.out.println("\"" + find_word + "\" is at index " + line_number);
}
}
System.out.println("Search again?");
find_word = keyboard.nextLine();
}
}
catch(FileNotFoundException e)
{
System.out.println("Nope!");
}
}
}
我试图通过一个名为dict.txt的Dictionary.txt文件,将它放在一个ArrayList中(这似乎工作)并允许输入将在ArrayList中输出该单词的位置。我试图通过将user_input转换为ArrayList所包含的对象来实现这一点,但我无法比较这两者,以便我可以在ArrayList中输出正确的对象实例。请帮忙!
答案 0 :(得分:1)
什么是Dict ...如果它是你的自定义类,那么让这个类实现Comparable Interface。
class Dict implements Comparable<Dict>
{
@Override
public int compareTo(Dict other)
{
//here you can call "compareTo on Strings or equals on String
}
}
使用Comparable接口具有优势,因为现在我们可以在Dict上调用各种Arrays
实用程序类方法。
或者作为一种更简单的方法,只需在Dict类中覆盖equals
方法。但是,您还需要覆盖hashCode
方法,因此hashCode
和equals
之间的合同始终保持不变。
答案 1 :(得分:0)
上述程序中的问题是你正在比较dict类的对象。但实际上你必须比较存储在dict对象中的字符串。
例如,如果dict类使用名为'inp'的String变量,则使用以下代码。 如果(my_collection.get(LINE_NUMBER).inp.contains(n.inp)) ....
否则实现类似的接口并覆盖dict类中的compareTo方法。