-1

如果在文件中找不到关键字“ERROR”,则打印一次“Nothing Found”,此代码扫描每一行并打印每一行的输出。但如果在多行中找到“ERROR”,则需要打印所有“发现错误。

任何帮助将不胜感激!

 import java.io.File;
 import java.io.FileNotFoundException;
 import java.util.Scanner;


    public class Scan {

public static void main(String[] args) throws FileNotFoundException {


    Scanner s = new Scanner(new File("Users/home/test.txt"));
    while(s.hasNextLine()){
        //read the file line by line
    String nextLine = s.nextLine();
                //check if the next line contains the key word
        if(nextLine.contains("ERROR"))
        {
                  //whatever you want to do when the keyword is found in the file
            System.out.println("Failed" + " " + nextLine);
        }
        else if(nextLine.contains("Failed!")){
                System.out.println("Not Found");

        }


        }         

    }

}
4

2 回答 2

2

据我所知,这段代码将遍历文件并打印:

"Failed" + " " + nextLine

每次:

nextLine.contains("ERROR")

这太棒了!问题在这里:

else if(nextLine.contains("Failed!")){
            System.out.println("Not Found");

    }

在每个循环中,您将检查 nextLine 是否包含字符串“失败!”,然后打印“未找到”。

我不认为你想要那个。

尝试这个:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class ErrorScanner
{
    public static void main(String[] args) throws FileNotFoundException 
    {
        Scanner s = new Scanner(new File("Users/home/test.txt"));
        boolean ifError = false;
        while(s.hasNextLine())
        {  
        String nextLine = s.nextLine();       
            if(nextLine.contains("ERROR"))
            {
                System.out.println("Failed" + " " + nextLine);
                ifError = true;
            }
        }     
        if(! ifError)
        {
            System.out.println("Nothing found");
        }
    }
}
于 2013-08-03T05:13:03.057 回答
1

您希望将标志 bool foundError 初始化为 false,当您发现错误时将其设置为 true,在文件扫描结束时检查变量 - 如果它为 false,则打印您的“未找到”消息。

于 2013-08-03T00:29:24.500 回答