我坚持这个练习,我必须匹配用户的输入和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 ");
}
}
}
}
}
答案 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