Java 可以设置if语句来搜索文本文件中的特定模式吗?
我正在从事一个java项目,该项目与分数有关。现在在这个项目中,我必须从一个文本文件中拿出一个分数列表,根据这一行,我必须对它们进行简化、加、减、乘和除。 文本文件的一部分:Java 可以设置if语句来搜索文本文件中的特定模式吗?,java,algorithm,if-statement,text-files,fractions,Java,Algorithm,If Statement,Text Files,Fractions,我正在从事一个java项目,该项目与分数有关。现在在这个项目中,我必须从一个文本文件中拿出一个分数列表,根据这一行,我必须对它们进行简化、加、减、乘和除。 文本文件的一部分: -16/6 -7/2 -17 +20 4/2 / +8 4/8 -17/15 + +14/17 +17 5/14 + -2 现在我的问题是,当我从文本文件中拉出一行并读取它时,有没有一种方法来设置if语句或查找“anynumber\uu/\u anynumber”或“anynumber\u anynumber/anynu
-16/6
-7/2
-17
+20 4/2 / +8 4/8
-17/15 + +14/17
+17 5/14 + -2
现在我的问题是,当我从文本文件中拉出一行并读取它时,有没有一种方法来设置if语句或查找“anynumber\uu/\u anynumber”或“anynumber\u anynumber/anynumber”的东西
如果没有,什么是删除分数的最佳方法?您可以使用
StringTokenizer
类。我在这里用你的例子
String nextLine = "-17/15 + +14/17"; //you read in each line as a String
String delimiters = "+-*/ ";
StringTokenizer st = new StringTokenizer(nextLine, delimiters, true);
while(st.hasMoreElements()){
System.out.println(st.nextElement());
}
它将分为[-,17,/,15,+,+,14,/,17],这个循环将它们全部打印出来,这样您就可以看到标记器是如何工作的。
然后,您可以将所有操作数和运算符放在堆栈上,并添加相应的逻辑以从那里计算它们。如果你要求一个具体的方法,你应该提供更多关于你的项目的细节。你想做什么有点不清楚。看起来您想要创建一个表达式计算器程序,但是您还声明希望有一个程序在文件中搜索除法表达式
您可以查看每个令牌
if(st.nextElement.equals("+"));
if(st.nextElement.equals("-"));
if(st.nextElement.equals("/"));
if(st.nextElement.equals("*"));
if(st.nextElement.equals(" ")); //whitespace
else; //else it is a number
您可以使用StringTokenizer
类。我在这里用你的例子
String nextLine = "-17/15 + +14/17"; //you read in each line as a String
String delimiters = "+-*/ ";
StringTokenizer st = new StringTokenizer(nextLine, delimiters, true);
while(st.hasMoreElements()){
System.out.println(st.nextElement());
}
它将分为[-,17,/,15,+,+,14,/,17],这个循环将它们全部打印出来,这样您就可以看到标记器是如何工作的。
然后,您可以将所有操作数和运算符放在堆栈上,并添加相应的逻辑以从那里计算它们。如果你要求一个具体的方法,你应该提供更多关于你的项目的细节。你想做什么有点不清楚。看起来您想要创建一个表达式计算器程序,但是您还声明希望有一个程序在文件中搜索除法表达式
您可以查看每个令牌
if(st.nextElement.equals("+"));
if(st.nextElement.equals("-"));
if(st.nextElement.equals("/"));
if(st.nextElement.equals("*"));
if(st.nextElement.equals(" ")); //whitespace
else; //else it is a number
到目前为止你试过什么?你有代码吗?如果是这样,请在此处发布相关部分。查找String#split
方法或正则表达式。您可以使用此正则表达式匹配您的模式[-+\d\/]+非常感谢,它现在工作得很好。基本上我所做的只是搜索模式,然后做数学运算。再次感谢你。到目前为止你都试了些什么?你有代码吗?如果是这样,请在此处发布相关部分。查找String#split
方法或正则表达式。您可以使用此正则表达式匹配您的模式[-+\d\/]+非常感谢,它现在工作得很好。基本上我所做的只是搜索模式,然后做数学运算。再次非常感谢。谢谢你,你帮了我很大的忙。它100%有效。谢谢你,你帮了我很大的忙。它的效果是100%。