我尝试使用contains
方法搜索句子中的单词,但它只适用于句子中的第一个单词。
例如,在“喜欢Shakira的照片”中搜索“Shakira”时,我的程序无法找到它。另一方面,在同一个句子中搜索“喜欢”有效。
这是我正在使用的代码:
package fules;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class fule {
public static int i,x,n,k,ba,sh,fe;
public static void main(String[] args) throws FileNotFoundException {
File s=new File("C:/Users/taha/Desktop/tt.in");
Scanner m=new Scanner(s);
fule obj=new fule();
i=m.nextInt();//test case
n=m.nextInt();
k=m.nextInt();
for (int l=0;l<6;l++){
boolean q=contains((m.next()),("taha"));
if(q) {
ba++;
}
boolean w=contains((m.next()),("Shakira"));
if(w)
sh++;
}
boolean e=contains((m.next()),("Fegla"));
if(e) {
fe++;
}
System.out.println("ba="+ba+" sh="+sh+" fe="+fe);
m.close();
}
static boolean contains (String s1,String s2)
{
return s1.contains(s2);
}
}
这是 (tt.in)
中的输入1
6 2
liked Badr's photo
liked Shakira's photo
liked Badr's photo
liked Fegla's photo
liked Shakira's photo
commented on Shakira's photo
有人可以帮帮我吗?
答案 0 :(得分:0)
您正在使用next()
方法获取Finds and returns the next complete token from this scanner
。因此,您只阅读句子的第一个单词。
尝试将next()
替换为nextLine()
。
如果要将相同的String与多个模式进行比较,请将该String存储在变量中。目前,您对contains()
的每次调用都会从扫描仪中读取新的字符串。
你应该写这样的东西:
String input = m.nextLine();
boolean q=contains(input,"Badr");
if(q)
{
ba++;
}
boolean w=contains(input,"Shakira");
if(w)
sh++;
}
boolean e=contains(input,"Fegla");
if(e)
{
fe++;
}
这会在“喜欢夏奇拉的照片”中找到“夏奇拉”。
当然,有更有效的方法来编写相同的代码。
String input = m.nextLine();
if (input.contains("Badr"))
ba++;
if (input.contains("Shakira"))
sh++;
if (input.contains("Fegla"))
fe++;