用javaeclipse编码

用javaeclipse编码,java,eclipse,Java,Eclipse,我需要制作一个程序,用户可以输入一个名称,程序将逐行搜索文件,直到找到匹配项,然后返回所有匹配项。这就是我所拥有的,我把文件输入到程序中,但似乎无法编写程序来搜索用户输入的文件。有什么帮助吗 赋值:这是代码必须能够做到的 读入每一行,解析出名称部分,对名称执行匹配,如果匹配返回全名,否则移动到下一行。如果您到达终点时没有找到匹配项,请发送消息 应该成为 if(scanner.nextLine().equalsIgnoreCase(name)) { System.out.println(

我需要制作一个程序,用户可以输入一个名称,程序将逐行搜索文件,直到找到匹配项,然后返回所有匹配项。这就是我所拥有的,我把文件输入到程序中,但似乎无法编写程序来搜索用户输入的文件。有什么帮助吗

赋值:这是代码必须能够做到的

读入每一行,解析出名称部分,对名称执行匹配,如果匹配返回全名,否则移动到下一行。如果您到达终点时没有找到匹配项,请发送消息

应该成为

if(scanner.nextLine().equalsIgnoreCase(name))
{ 
    System.out.println("I found " +name+ " in file " +file.getName());

}

正如他们在上面的评论中所说。另外,.equals用于比较两个对象,而不是两个字符串。由于它们都是字符串,您可能会成功使用此方法,但我建议在比较字符串时始终使用.equalsIgnoreCase。

按ctrl-shift键请查看您正在使用==运算符比较字符串,请改用equals,因为不要将kb与scanner进行比较。nextLine,但是name@Exagon:他们甚至没有比较字符串,这是不幸的一部分。kb是扫描仪的一个实例。@Makoto oha抱歉我的错误,修复了它。最好避免下一行的内部if条件。例如,如果我们想测试一行是否以A开头,以…结尾,该怎么办。?有人可以编写这样的代码,比如scanner.nestLine.startsWithA&&scanner.nextLine.endsWith。让我惊讶的是,为什么这并没有像他预期的那样起作用。这种方法的问题是,每次调用nextLine时,这个方法都返回下一行,所以每次调用都会将我们移动到另一行。所以startsWith将测试第一行,而endsWith将尝试测试第二行。最好将nextLine的结果存储在变量中,以后再使用它;Scanner kb=新ScannerSystem.inScanner Scanner=新Scannerfile;System.out.println请输入要搜索的名称:;字符串姓氏=kb.nextLine;字符串名称=file.getName;而scanner.hasNextLine{ifscanner.nextLine.endswithnames{System.out.printlnI在file+file.getName;}中找到了+name+{是的,答案是肯定的。许多人解释了为什么你永远找不到匹配的人。如果你希望来这里让别人为你工作,那你就大错特错了。如果你对你的帖子有其他问题,我建议你澄清一下。否则,请继续发布相关材料,not抱怨没有人应答。@SteveManC如果你知道如何读取文件中的每一行,解析出名称部分,对使用扫描仪kb获得的用户输入进行名称匹配,如果匹配返回打印全名,则移动到下一行。如果你到达末尾时没有匹配,请说些什么,
if(scanner.nextLine() == kb)
{ 
    System.out.println("I found " +name+ " in file " +file.getName());

}
if(scanner.nextLine().equalsIgnoreCase(name))
{ 
    System.out.println("I found " +name+ " in file " +file.getName());

}