变量范围-JAVA类/方法

变量范围-JAVA类/方法,java,arraylist,scope,Java,Arraylist,Scope,我正在将文本文件中的数据读入ArrayList,然后尝试在该ArrayList中搜索特定字符串(第二种方法) 我相信我读取的数据是正确的,但是我正在努力编写方法,以便在ArrayList填充后在其上实现。例如,在下面的检查方法中,当我确定输入字符串在数据结构中时,它返回false 我认识到这可能是我的变量范围或我的方法如何相互作用的问题(即,当我检查arraylist时,它实际上没有填充数据) 任何帮助都将不胜感激-谢谢 import java.util.*; import java.io.*

我正在将文本文件中的数据读入ArrayList,然后尝试在该ArrayList中搜索特定字符串(第二种方法)

我相信我读取的数据是正确的,但是我正在努力编写方法,以便在ArrayList填充后在其上实现。例如,在下面的检查方法中,当我确定输入字符串在数据结构中时,它返回false

我认识到这可能是我的变量范围或我的方法如何相互作用的问题(即,当我检查arraylist时,它实际上没有填充数据)

任何帮助都将不胜感激-谢谢

import java.util.*; 
import java.io.*;

public class Word {


ArrayList<String> diclist = new ArrayList<String>();

private void readIn() throws FileNotFoundException {

   File file = new File("filepath");
   Scanner s = new Scanner(file);
   s.useDelimiter("\n");

   while (s.hasNextLine()) {
       diclist.add(s.nextLine());
    }
   s.close();
                                                    }

public boolean checkIn(String z) {//Check if input string z is in diclist

    for (int i = 0; i < diclist.size(); i++) {
        if (diclist.get(i).equals(z)) {return true;}
    }
    return false;
                                                    }
}
import java.util.*;
导入java.io.*;
公共类词{
ArrayList diclist=新的ArrayList();
私有void readIn()引发FileNotFoundException{
文件=新文件(“文件路径”);
扫描仪s=新扫描仪(文件);
s、 使用分隔符(“\n”);
而(s.hasNextLine()){
添加(s.nextLine());
}
s、 close();
}
公共布尔签入(字符串z){//检查输入字符串z是否在列表中
对于(int i=0;i
到目前为止,您发布的代码中没有明显的问题。调用
readIn
后,如果文件存在、可读且不为空,则应填充列表。我建议通过调试器运行它

请注意,
checkIn
方法可以大大简化为:

return diclist.contains(z);

“我认识到这可能是我的变量作用域或我的方法如何相互作用的问题……”
--那么,您如何调用此代码?
文件路径中有什么?将什么作为参数传递给
checkIn()
?请尝试打印ArrayList的内容以及check方法中的z值。然后,您将能够看到内容是否如您所期望的那样。请发布您的文件内容(如果太大,请仅发布一个片段)和您要查找的字符串。请注意,
equals
检查区分大小写。顺便说一句:在这段代码中,您使用的是
diclist
,因此变量范围似乎没有问题。我的直觉是,您从未调用
readIn()
。你不能从你发布的
Word
类内部调用它,因为它是
private
,你不能从其他任何地方调用它。在空的
ArrayList
上调用
checkIn()
将始终返回
false
。Azurefrog您完全正确。我没有调用readIn方法来初始化数组。谢谢大家的帮助。