2015-11-19 44 views
1

我有一個文件,我正在導入,我想要做的是要求用戶的輸入,並將其用作查找要檢查的正確行的基礎。我有它設置如下:java根據第一個字找到文件中的特定行

 public class ReadLines { 
    public static void main(String[] args) throws FileNotFoundException 
    { 
     File fileNames = new File("file.txt"); 
    Scanner scnr = new Scanner(fileNames); 
    Scanner in = new Scanner(System.in); 

    int count = 0; 
    int lineNumber = 1; 

    System.out.print("Please enter a name to look up: "); 
    String newName = in.next(); 

    while(scnr.hasNextLine()){ 
      if(scnr.equals(newName)) 
      { 
       String line = scnr.nextLine(); 
       System.out.print(line); 
      } 
     } 
} 

現在,我只是想獲得它打印出來看,我已經抓獲了,但不工作。有沒有人有任何想法?另外,如果它很重要,我不能使用try和catch或數組。 非常感謝!

+1

您可以使用['String.startsWith()'](http://docs.oracle.com/javase/7/docs/api /java/lang/String.html#startsWith(java.lang.String)) – alfasin

+0

我想你想使用'sncr.findInLine' API,而不是'equals' –

+0

非常感謝您的幫助!這兩個都很棒! – Vaak

回答

1

您需要將行緩存在本地變量中,以便稍後打印出來。像這樣的應該做的伎倆:

while(scnr.hasNextLine()){ 
    String temp = scnr.nextLine(); //Cache variable 
    if (temp.startsWith(newName)){ //Check if it matches 
     System.out.println(temp); //Print if match 
    } 
} 

希望這會有所幫助!

+0

非常感謝!這完美的作品! – Vaak

0

我做的東西線:

Scanner in = new Scanner(System.in); 

System.out.print("Please enter a name to look up: "); 
String name = in.next(); 

List<String> lines = Files.readAllLineS(new File("file.txt").toPath(), StandardCharsets.UTF_8); 
Optional<String> firstResult = lines.stream().filter(s -> s.startsWith(name)).findFirst(); 

if (firstResult.isPresent) { 
    System.out.print("Line: " + firstResult.get()); 
} else { 
    System.out.print("Nothing found"); 
} 
相關問題