我想接收一个文本文件(由 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/