Java:如果一行包含特定单词,则打印一次

标签 java string args

我想接收一个文本文件(由 args[0] 给出)并逐行检查 args[0] 之后的所有参数给出的单词,并用星号打印每行(如果包含所述单词)。

我很确定我现在拥有的代码足以检查一个单词,但我不确定如何检查一行是否包含多个单词(由参数给出)并且仅打印如果是的话,就行一次。

我认为 for 循环可能会起作用,但如果它碰巧包含多个单词,它会多次打印一行。

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

public class WordFinder
{
    public static void main(String args[])
    {
        File file = new File(args[0]);
        Scanner in = null;
        try
        {
            in = new Scanner(file);
            while(in.hasNext())
            {
                String line = in.nextLine();
                if (line.contains(args[1]))
                {
                    System.out.println("* " + line);
                }
                else
                {
                    System.out.println("  " + line);
                }
            }
        }
        catch (FileNotFoundException e)
        {
            System.out.println("Cannot find " + args[0])
            return;
        }
    }
}

最佳答案

您想检查所有(和)

            boolean foundAll = true;
            for (int i = 1; i < args.length && foundAll; ++i) {
                foundAll = foundAll && line.contains(args[i]);
            }
            if (foundAll)
            {
                System.out.println("* " + line);
            }
            else
            {
                System.out.println("  " + line);
            }

或者至少一场比赛(或)

            boolean foundAny = false;
            for (int i = 1; i < args.length; ++i) {
                foundAny = line.contains(args[i]);
                if (foundAny) break;
            }
            if (foundAny)
            {
                System.out.println("* " + line);
            }
            else
            {
                System.out.println("  " + line);
            }

关于Java:如果一行包含特定单词,则打印一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33360691/

相关文章:

java - 使用英特尔 VTune Amplifier XE 2013 分析 Java 应用程序

java - 为什么这个方法返回null? (从数组中调用一组字符串)

c++ - 为什么不支持连接 std::string 和 std::string_view?

r - 缩短 R 中的长向量

java - 为什么我们在java main方法中将args[]命名为arhs[](或任何其他名称)就没有错误?

java - Android 多线程和服务

java - 单个 int 的多次返回

java - Commons IO (Apache) copyURLToFile 不工作

java - 使用 args 的回文;帮我找出错误?

java - 使用 String[] args 作为用户输入,如果未给出输入则设置值