代码是这样的:
public void display() throws IOException{

System.out.print("Enter keyword:");
Scanner scan = new Scanner(System.in);
String s =scan.nextLine();
//System.out.println(s.toString());

BufferedReader in = new BufferedReader(new InputStreamReader(
new FileInputStream("d:/record.txt")));        String line = null;
        while((line=in.readLine())!=null){
         if(line.contains(s));
         {System.out.println(line.toString());
         }}
意思是这样:
随便输入一个字符串s,看它是否是字符串line的子字符串,若是,这输出line字符串。line字符串是txt文件里一堆的记录。

解决方案 »

  1.   

    出错的原因是它没有任何选择的把txt文件里的记录全输出了。
      

  2.   

    if ( line.contains( s ) )
    ;这行多打了分号,低级错误,debug一跟就出来了。
      

  3.   

    if(line.contains(s));
    后面多了个分号;表示满足if条件的话,什么也不做
    于是后面的{System.out.println(line.toString());}就和if脱离了关系,变成无条件输出
    所以造成结果不对
      

  4.   

    现在我把它改成了这样:
    public class SearchEmp {

    public void display() throws IOException{

    System.out.print("Enter keyword:");
    Scanner scan = new Scanner(System.in);
    String s =scan.nextLine();

    BufferedReader in = new BufferedReader(new InputStreamReader(
    new FileInputStream("d:/record.txt")));        String line = null;
            while((line=in.readLine())!=null){
             Pattern p = Pattern.compile(s);
         Matcher m = p.matcher(line);
         while (m.find()) {
         System.out.println(line.toString());
         } }
          
    }}
    输出的结果是我想要的那种,但为什么有时候会有重复存在呢