Java打印文件中的特定数据
我有一个txt文件。在这里有一些规则,我必须把括号中的所有内容都放在一个单独的文件中。但我甚至没有在控制台上显示它 我已经尝试了很多方法,但我总是会遇到一些错误 对于现在的解决方案,它只是在控制台中不显示任何内容。有人知道为什么吗 括号始终与“InputParameters”在同一行中。我在代码末尾尝试了一些类似的方法 概述的解决方案不起作用。也许有人有主意了 使用下面的代码,我得到以下错误: 线程“main”java.lang.StringIndexOutOfBoundsException中的异常: 字符串索引超出范围:java.lang.String.substring处为-1(未知 源代码),位于blabla.execute.main(execute.java:17) 下面是txt文件中的一些内容:Java打印文件中的特定数据,java,eclipse,substring,reader,Java,Eclipse,Substring,Reader,我有一个txt文件。在这里有一些规则,我必须把括号中的所有内容都放在一个单独的文件中。但我甚至没有在控制台上显示它 我已经尝试了很多方法,但我总是会遇到一些错误 对于现在的解决方案,它只是在控制台中不显示任何内容。有人知道为什么吗 括号始终与“InputParameters”在同一行中。我在代码末尾尝试了一些类似的方法 概述的解决方案不起作用。也许有人有主意了 使用下面的代码,我得到以下错误: 线程“main”java.lang.StringIndexOutOfBoundsException中的
dialect "mvel"
rule "xxx"
when
InputParameters (xy <= 1.124214, xyz <= 4.214214, abc <= 1.12421, khg <= 1.21421)
then
Ty
问题是,如果要在不存在搜索字符串的字符串中获取字符串(indexOf())的索引,indexOf将返回-1,如果方法子字符串接收到参数-1,则会抛出StringIndexOutOfBoundsException。我建议首先检查一行是否包含“InputParameter”,因为您说过这个词总是在同一行中,然后使用substring和indexOf方法获取括号内的字符串 这个适合我
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class FileRead {
public static void main(String[] args) {
final String filename = "$insertPathToFile$";
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(filename));
String line = br.readLine();
while(line != null){
if (line.contains("InputParameters")) {
System.out.println(line.substring(line.indexOf("(")+1, line.indexOf(")")));
} // end if
line = br.readLine();
} // end while
} catch (Exception e) {
// TODO: handle exception
} finally {
try {
br.close();
} catch (IOException e) {}
} // end try
} // end main
} // end class
线程“main”java.lang.StringIndexOutOfBoundsException中的异常:
字符串索引超出范围:java.lang.String.substring处为-1(未知
源代码),位于blabla.execute.main(execute.java:17)
此异常意味着-1
已传递给substring()
方法。此-1
由indexOf()
在找不到任何内容时生成
你所有的行都包含括号吗?应检查管路中是否存在支架
while ((line = br.readLine()) != null) {
if(line.indexOf(("\\(") != -1 && line.indexOf(("\\)") != -1) {
System.out.println(line.substring(line.indexOf(("\\("), line.indexOf(("\\)")))));
}
}
请删除不使用的代码部分。还请向我们展示一个您想要阅读的输入的小样本。如果能看到文本文件以及一个最小的代码示例,那将非常好。@PhillipS“我刚刚更改了while条件,并且…”-将该信息添加到您的问题中请不要将代码放入注释中,请回答您的问题。用新代码编辑了我的问题,一个错误和txt文件中的一些内容谢谢您的回答。这帮了我的忙。但是我现在不会结束这个问题,因为我现在不能测试它。
while ((line = br.readLine()) != null) {
if(line.indexOf(("\\(") != -1 && line.indexOf(("\\)") != -1) {
System.out.println(line.substring(line.indexOf(("\\("), line.indexOf(("\\)")))));
}
}