我想将输入存储在我的字典类中,以便我可以搜索此类中的单词。但我还需要在其他类中使用该数组。有没有人知道如何向Dictionary()构造函数添加输入?
有没有人知道如何解决这个问题?
提前非常感谢!!!!
public class Dictionary {
// Private data fields
public ArrayList<String> dict;
Dictionary() {
dict = new ArrayList<String>();
}
public void add (String s){
dict.add(s);
}
public int size (){
return dict.size();
}
public String get(int i) {
return dict.get(i);
}
public ArrayList<String> getList(){
return dict;
}
public static void main(String[] args) throws IOException {
if (args.length < 1) {
System.out.print("Must have a file.");
System.exit(1);
}
try {
File dictionaryFile = new File(args[0]);
Scanner fin = new Scanner(dictionaryFile);
System.out.println(dictionaryFile.getAbsolutePath());
if (!dictionaryFile.exists()) {
System.out.println("Dictionary " + args[0] + "does not exist");
}
else if (!dictionaryFile.canRead()) {
System.out
.println("Dictionary " + args[0] + " cannot be read.");
}
Dictionary dict = new Dictionary();
while (fin.hasNext()) {
dict.add(fin.nextLine());
}
for (int i = 0; i < dict.size(); i++) {
System.out.println(dict.get(i));
}
} catch (FileNotFoundException e) {
System.out.println("No such file found " + args[0]);
}
}
}
/**
*This is the class I want to reference the array in
*/
public class FindWords {
public static void main(String[] args) {
Dictionary dictionary = new Dictionary();
System.out.print(dictionary.getList());
}
}
答案 0 :(得分:0)
好的......问题是你在这个类中创建一个新的字典对象,你的数组列表与一个对象相关联,或者它是在对象级别定义的。
因此,每次实例化Dictionary对象时都会创建一个新的arraylist。
尝试将字典中的arraylist设为静态。
例如,
public static ArrayList<String> yourArrayList;
现在,一旦在main方法中的Dictionary中添加了一些元素,就可以从FindWord类中访问该数组列表,如
Dictionary.dict
或者,如果您无法在字典类中做出使数组列表静态的决定,那么您需要在FindWord类中初始化列表,因为您的FindWord类代码显示您没有在字典中添加元素在此列出。
在这里,让我再试一次。
为什么 null ?
public class: FindWords {
public static void main(String[] args) {
Dictionary dictionary = new Dictionary();//1
/***
. your list initialization code should come here
. It could be a code block or a method defined in Dictionary class itself
. which can be called like dictionary.initializeList();
***/
System.out.print(dictionary.getList()); //3
}
}
这里,词典对象有一个与之关联的arraylist(true),但它尚未初始化。所以,当你说
时 dictionary.getList();
它实际上是取出了未初始化的列表。
答案 1 :(得分:0)
在
之后修改你的findwords类 public class FindWords {
Dictionary dict=null;
public void (Dictionary dict){
this.dict = dict;
}
public void print(){
for(int i=0;i<dict.getList.size();i++)
{
System.out.println(dict.getList.get(i));
}
}
之后,在fininshing try块之前添加以下行
FindWords f = new FindWords(dict);
f.print();