为什么这个功能在 Eclipse 中不起作用但不显示错误?
Why is this function not working but not displaying errors in Eclipse?
如果我注释掉两个 for 循环,程序将 运行 正常(假设我调整了一两个变量)。但是,当我在 Eclipse 中编译和 运行 时,它只是坐着并且没有任何溢出错误或其他任何错误。该文件是一个文本文件,我试图根据其中包含 * 字符的行过滤掉内容。
public List<String> readFile1(File file) throws IOException {
FileInputStream fis = new FileInputStream(file);
//Construct BufferedReader from InputStreamReader
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
List<String> list = new ArrayList<>();
String line = null;
String checker = null;
int whereMenuItemIs = 0;
while ((line = br.readLine()) != null) {
if(!line.startsWith("\u0009")) {
for(int i=0; i<getListFromFile("C:/IRT", "bios.txt").size(); i++)
{
if(getListFromFile("C:/IRT", "bios.txt").get(i).contains(line))
{
i = whereMenuItemIs;
}
}
for(int j=whereMenuItemIs+1; j<getListFromFile("C:/IRT", "bios.txt").size(); j++)
{
if(readFile1(file).contains(getListFromFile("C:/IRT", "bios.txt").get(j)))
{
System.out.println("it got here");
}
else
{
checker= checker + getListFromFile("C:/IRT", "bios.txt").get(j);
}
}
if(checker.contains("\u0009*")){
}
list.add(line);
}
}
br.close();
return list;
}
虽然在其他语句中嵌入函数在很多地方都有效,但在其他地方却行不通。
当编译器设置 for 循环和类似结构时,它会做很多工作。我认为 i 的循环值计算为 getListFromFile("C:/IRT", "bios.txt").size();与您的预期有很大不同。
尝试打印出答案--getListFromFile("C:/IRT", "bios.txt").size();或将其置于循环之外,将其分配给变量然后使用它。如果等式确实产生了文件大小,它可能会在每次循环时重新设置。
此外,您不应在一个程序中读取该文件 5 次。
您的线路:
i = whereMenuItemIs;
应该是:
whereMenuItemIs = i;
如果我注释掉两个 for 循环,程序将 运行 正常(假设我调整了一两个变量)。但是,当我在 Eclipse 中编译和 运行 时,它只是坐着并且没有任何溢出错误或其他任何错误。该文件是一个文本文件,我试图根据其中包含 * 字符的行过滤掉内容。
public List<String> readFile1(File file) throws IOException {
FileInputStream fis = new FileInputStream(file);
//Construct BufferedReader from InputStreamReader
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
List<String> list = new ArrayList<>();
String line = null;
String checker = null;
int whereMenuItemIs = 0;
while ((line = br.readLine()) != null) {
if(!line.startsWith("\u0009")) {
for(int i=0; i<getListFromFile("C:/IRT", "bios.txt").size(); i++)
{
if(getListFromFile("C:/IRT", "bios.txt").get(i).contains(line))
{
i = whereMenuItemIs;
}
}
for(int j=whereMenuItemIs+1; j<getListFromFile("C:/IRT", "bios.txt").size(); j++)
{
if(readFile1(file).contains(getListFromFile("C:/IRT", "bios.txt").get(j)))
{
System.out.println("it got here");
}
else
{
checker= checker + getListFromFile("C:/IRT", "bios.txt").get(j);
}
}
if(checker.contains("\u0009*")){
}
list.add(line);
}
}
br.close();
return list;
}
虽然在其他语句中嵌入函数在很多地方都有效,但在其他地方却行不通。
当编译器设置 for 循环和类似结构时,它会做很多工作。我认为 i 的循环值计算为 getListFromFile("C:/IRT", "bios.txt").size();与您的预期有很大不同。
尝试打印出答案--getListFromFile("C:/IRT", "bios.txt").size();或将其置于循环之外,将其分配给变量然后使用它。如果等式确实产生了文件大小,它可能会在每次循环时重新设置。
此外,您不应在一个程序中读取该文件 5 次。
您的线路:
i = whereMenuItemIs;
应该是:
whereMenuItemIs = i;