gpt4 book ai didi

java - 从文件中读取和比较字符和字符串

转载 作者:行者123 更新时间:2023-11-30 11:45:39 26 4
gpt4 key购买 nike

下面的代码从文件“helpFile.txt”中读取并检查由“#”表示的索引。从文件中读取的变量存储在整数 c 中,如果读取的字符是“#”而不将整数转换为字符,则与“#”进行比较。我想知道比较是否有效,因为编译器没有显示任何错误。此外,假设程序在文件中找到了“#”,并且紧跟在“#”之后的名为“topic”的字符串可以使用 readLine() 读取。 “String info = br.readLine()”只是“topic”还是“#”+“topic”?很抱歉问了这么长的问题。非常感谢帮助。

boolean helpOn(字符串内容){

    private BufferedReader br;
private String info, topic;
private static PrintWriter pw = new PrintWriter(System.out, true);
int c;


br = new BufferedReader(new FileReader("helpFile.txt"));

try{
do{
//read characters until '#' is found
c = br.read();


if(***c=='#'***){ //check if the character is '#'
pw.println(c);
if((**topic=br.readLine()**).equalsIgnoreCase(what)){ //check if 'what' string is equal to 's' which is the string after '#'
while((info=br.readLine())!=null){ //print info until the end of info
if(info!=null)
pw.println(info);
}
return true;
}
}
}
while(c!=-1);
}
catch(IOException ex){
pw.println("File error.");
ex.printStackTrace();
try{
br.close();
}
catch(IOException e){
pw.println("Error closing file.");
e.printStackTrace();
}
return false;
}

try{
br.close();
}
catch(IOException ex){
pw.println("Error closing file.");
ex.printStackTrace();
}
return false; //topic not found
}

最佳答案

我试过你的代码,它对我来说很好,我认为你需要检查你的“helpFile.txt”。我在里面用了这个。

adad#hello

howareyou

这是我得到的结果。

c: 35

topic: hello

info: howareyou

我打印了你使用的所有三个变量。 c、主题、信息。现在因为你在读取一个字符后使用 readline(),你必须在“helpFile.txt”的下一行给出你的“信息”

info 将包含主题之后的任何内容,因为您正在使用 readline() 函数,它将转到下一行。试试我的例子。

一旦遇到“#”,你的var

C will have "#" (35).

然后

topic will have anything after the "#" till the end of line, because of readline();

然后

info will have the next line after topic.

如果你正确地格式化你的 helpFile.txt,这将工作正常

编辑

i have to specify the full file name everytime

您正在使用 eclipse,我猜您正在将文件保存在“SRC”文件夹中。将它们保存在您的项目文件夹中。就在 SRC 文件夹上面,然后执行此操作。

br = new BufferedReader(new FileReader("helpFile.txt"));

它应该可以工作。

编辑2你不需要两次检查 null 信息

while((info=br.readLine())!=null){
//print info until the end of
// if(info!=null) noT needed, u alreay did that above
pw.println("info"+info);
}

如果为NULL,则自动跳出循环

EDIT3

i don't want to print all the texts

正如您使用# 标记 block 的开始一样,您可以使用任何东西来标记它的结束。例如

helpFile.txt

adad#hello

howareyou

$

Other text here

blah blah blah...

...

现在,您可以将 while 修改为:

while(!(info=br.readLine()).equals("$")){
pw.println("info"+info);
}

一旦得到“$”,循环就会退出,之后不会打印任何东西。

关于java - 从文件中读取和比较字符和字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10265565/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com