缓冲 Reader 读取特定行和文本

Buffered Reader read certain line and text

这是我的第一个 post,所以我不确定这里的情况如何。 基本上,我的代码需要一些 help/advice。该方法需要读取某一行并打印出输入文本后的文本 and =

想要文本文件

A = Ant

B = Bird

C = Cat

所以如果用户输入 "A" 它应该打印出类似

的内容
-Ant

到目前为止,我设法让它忽略 "=" 但仍然打印出整个文件

这是我的代码:

public static void readFromFile() {
    System.out.println("Type in your word");
    Scanner scanner = new Scanner(System.in);
    String input = scanner.next();
    String output = "";
    try {
        FileReader fr = new FileReader("dictionary.txt");           
        BufferedReader br = new BufferedReader(fr);            
        String[] fields;
        String temp;
        while((input = br.readLine()) != null) {
            temp = input.trim();
            if (temp.startsWith(input)) {
                String[] splitted = temp.split("=");
                output += splitted[1] + "\n";
            }
        }
        System.out.print("-"+output);
    }
    catch(IOException e) {

    }
}

看起来问题出在这一行,因为它永远是正确的。

if (temp.startsWith(input))

您需要为从文件中读出的行和您从用户那里获得的输入设置不同的变量。尝试类似的东西:

String fileLine;
while((fileLine = br.readLine()) != null)
    {
        temp = fileLine.trim();
        if (temp.startsWith(input))
        {
            String[] splitted = temp.split("=");
            output += splitted[1] + "\n";
        }
    }

试试这个,它有效:步骤:

1) 使用 scanner 阅读 input 2) 使用 bufferedreader 阅读 file 3) split 每行使用 "-" 作为 delimiter 4) compare first lineinput 的字符 5) if first character 等于 input 那么 print the associated value, preceded by a "-"

import java.io.BufferedReader; 
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.File;
import java.util.Scanner; 
class myRead{
    public static void main(String[] args) throws FileNotFoundException, IOException {
        System.out.println("Type in your word");
        Scanner scanner = new Scanner(System.in);
        String input = scanner.next();
        long numberOfLines = 0;
        BufferedReader myReader = new BufferedReader(new FileReader("test.txt")); 
        String line = myReader.readLine();
            while(line != null){
                String[] parts = line.split("=");
                if (parts[0].trim().equals(input.trim())) {
                System.out.println("-"+parts[1]);
                }
                line = myReader.readLine();
            } 
}
}

输出(取决于输入):

- Ant
- Bird
- Cat

您可以使用ScanneruseDelimiter()方法来拆分输入文本

scanner.useDelimiter("(.)*="); // Matches 0 or more characters followed by '=', and then gives you what is after `=`

下面的代码是我在IDEONE中试过的(http://ideone.com/TBwCFj)

Scanner s = new Scanner(System.in);
        s.useDelimiter("(.)*=");
        while(s.hasNext())
        {
            String ss = s.next();
            System.out.print(ss);

        }
 /**
  * Output
  *
  */
  Ant
  Bat

您需要先用新行“\n”拆分文本文件(假设在每个 "A = Ant"、"B = Bird"、"C = Cat" 声明之后它都以新行开始)和THEN 找到输入的字符并进一步将其拆分为“=”。

因此您将需要两个字符串数组 (String[ ]),一个用于每一行,一个用于将每一行分隔成例如"A" 和 "Ant"。 你很亲近。