我试图将数字(包括Double)与诸如" 4 + 5 *(4.5 + 6)"之类的字符串分开。 我想过使用扫描仪将数字与我的字符串分开。我想听听是否有更好的方法,并且知道如何使用扫描仪进行操作? 这是我的代码,只是想检查它是否有效并且它引发了异常......
package testzehavit;
import java.util.Scanner;
public class main {
public static void main(String[] args) {
Scanner s= new Scanner("443+54+24");
s.useDelimiter("+");
System.out.println(s.next());
}
}
谢谢
答案 0 :(得分:1)
扫描仪分隔符是正则表达式。在正则表达式中使用符号“+”表示“一次或多次”。
您想要做的是:
public static void main(String[] args) {
Scanner s= new Scanner("443+54+24");
s.useDelimiter("\\+");
System.out.println(s.next());
}
答案 1 :(得分:1)
来自this question/answer你必须逃避+
,因为该方法采用正则表达式而不是文字字符串。在Java中,您使用双反斜杠\\
进行转义。这段代码:
public static void main(String[] args) {
Scanner s = new Scanner("443+54+24");
s.useDelimiter("\\+");
System.out.println(s.next());
}
打印443
答案 2 :(得分:0)
使用String.contains();方法。 你可以放一个表示数字和操作数范围的正则表达式,或者做一个简单的for循环,并将每次迭代解析为String,将它作为一个argurment传递给contains方法。
很抱歉没有展示任何代码,但我在手机上。 Google String.contains()和正则表达式。你应该能够将两者结合起来。
答案 3 :(得分:0)
public static void main(String [] args){
Scanner s = new Scanner("443+54+24");
s.useDelimiter("\\+");
System.out.println(s.next());
}