缓冲 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
line
与 input
的字符
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
您可以使用Scanner
的useDelimiter()
方法来拆分输入文本
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"。
你很亲近。
这是我的第一个 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
line
与 input
的字符
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
您可以使用Scanner
的useDelimiter()
方法来拆分输入文本
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"。 你很亲近。