在txt中找到一个单词并显示该行

时间:2015-04-09 05:39:20

标签: java string class if-statement while-loop

我坚持这个练习,我必须匹配用户的输入和txt文件上的单词,并且该匹配必须显示整行,但我不知道该怎么做,我有代码,但我不确定它是否正确

//codes01.dat

IXE, Mangalore, India

BOM, Mumbai, India

PPP, Proserpine Queensland, Australia

RKT, Ras Al Khaimah, United Arab Emirates

输入:ProseRPine

产出:PPP,Proserpine Queensland,Australia


   import java.io.*;
import java.util.*;
public class pruebas
{
    public static void main(String[] args) throws java.io.IOException
    {
        System.out.print(" enter airport name");
        Scanner keyboard = new Scanner(System.in);
        String input = keyboard.nextLine();
        BufferedReader br = new BufferedReader(new FileReader("codes01.dat"));
        String s1;
        String s2;
        String strline;
        while (strline = br.readLine())
        {
            s1 = br.readLine();
            int numTokens = 0;
            StringTokenizer st = new StringTokenizer(s1);

            while (st.hasMoreTokens()) {
                s2 = st.nextToken();
                ++numTokens;

                if (s2.equalsIgnoreCase(input)) {
                    System.out.pritn(s1);
                } else {
                    System.out.print(" no data found ");
                }
            }
        }
    }
}

5 个答案:

答案 0 :(得分:0)

从文件中读取每一行,将其保存在String中并检查public boolean contains(CharSequence s)

答案 1 :(得分:0)

我还没有尝试过你的代码,但是在理解了这个要求后,我可以建议你这个例子。 http://stackoverflow.com/questions/14675452/find-whole-line-that-contains-word-with-php-regular-expressions

使用以下正则表达式模式pattern = '/^.*\bsession\b.*$/m';匹配您的字符串并查看是否检索到整行

答案 2 :(得分:0)

您使用Java-8,可以使用BufferedReader#lines优雅地解决此问题。

BufferedReader br= new BufferedReader(new FileReader(new File("codes01.dat")));
String input= "ProseRPine";
String output= br.lines()
  .filter(e-> e.toLowerCase().contains(input.toLowerCase())).findFirst().get();

答案 3 :(得分:0)

您有4个错误:

1)while循环条件应返回 boolean

2) FileNotFoundException 未被catched.use try catch block

3) IOException 没有catched.use try catch block

4)pritn()方法应该追溯到print();而不是print(),您可以使用println()

你的核心逻辑也很好,你只需要调试它。如果您愿意,可以使用String#contains()方法。

答案 4 :(得分:-1)

 /* package whatever; // don't place package name! */

import java.io.*;

import java.util.*;

class Ideone
{
public static void main (String[] args) throws java.io.IOException
{
String s1;
String s2="";
String input="Proserpine";
String strline;
   s1 = "PPP, Proserpine Queensland, Australia";
   int numTokens = 0;
   StringTokenizer st = new StringTokenizer(s1);

  while (st.hasMoreTokens())
  {
     s2 = st.nextToken();
     ++numTokens;
      if (s2.equalsIgnoreCase(input))
      {
      System.out.print(s1);
     break;
     }

  }
 } 
 }

成功时间:0.1记忆:321344信号:0PPP,Proserpine Queensland,Australia