Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用扫描器分离字符串_Java_String_Java.util.scanner - Fatal编程技术网

Java 使用扫描器分离字符串

Java 使用扫描器分离字符串,java,string,java.util.scanner,Java,String,Java.util.scanner,我试图将数字(包括Double)与字符串(如“4+5*(4.5+6)”)分开。 我想用扫描仪把数字和字符串分开。我想知道是否有更好的方法来做这件事,并知道如何用扫描仪来做? 这是我的代码,只是想检查它是否工作,它抛出了一个异常 package testzehavit; import java.util.Scanner; public class main { public static void main(String[] args) { Scanner s= ne

我试图将数字(包括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());

    }

}

谢谢

扫描仪分隔符是正则表达式。符号“+”在正则表达式中表示“一次或多次”

您要做的是:

public static void main(String[] args) {
    Scanner s= new Scanner("443+54+24");
    s.useDelimiter("\\+");
    System.out.println(s.next());

}

扫描程序分隔符是正则表达式。符号“+”在正则表达式中表示“一次或多次”

您要做的是:

public static void main(String[] args) {
    Scanner s= new Scanner("443+54+24");
    s.useDelimiter("\\+");
    System.out.println(s.next());

}
使用String.contains();方法。 您可以将一个表示数字和操作数范围的正则表达式放入其中,或者执行一个简单的for循环,并将每个迭代解析为字符串,以将其作为参数传递给contains方法

很抱歉没有演示任何代码,但我正在使用手机。 Google String.contains()和正则表达式。你应该能够将两者结合起来

使用String.contains();方法。 您可以将一个表示数字和操作数范围的正则表达式放入其中,或者执行一个简单的for循环,并将每个迭代解析为字符串,以将其作为参数传递给contains方法

很抱歉没有演示任何代码,但我正在使用手机。 Google String.contains()和正则表达式。你应该能够将两者结合起来

由于该方法采用正则表达式而不是文本字符串,因此必须转义
+
。在Java中,用双反斜杠转义
\\
。此代码:

public static void main(String[] args) {
    Scanner s = new Scanner("443+54+24");
    s.useDelimiter("\\+");
    System.out.println(s.next());
}
打印来自的
443

您必须转义
+
,因为该方法采用正则表达式而不是文字字符串。在Java中,用双反斜杠转义
\\
。此代码:

public static void main(String[] args) {
    Scanner s = new Scanner("443+54+24");
    s.useDelimiter("\\+");
    System.out.println(s.next());
}
打印公共静态void main(字符串[]args){

}公共静态void main(字符串[]args){


}

谢谢!如果我想使用多个delimeter怎么办?(例如字符串“4+5*(4.5+6)”)。有可能吗?然后使用
\+\\\\\\*
你可以@Jovani使用
“[+*\(\\)\\.\\.\\.\.\]””
@TimBiegeleisen的答案很好,但如果我是你,我会看看正则表达式是如何构建的:然后你可以使用一个在线工具来尝试你的正则表达式(比如)另外,你可以把注意力集中在数学上,这里有一个关于这个主题的问题示例:谢谢!如果我想使用多个delimeter怎么办?(例如字符串“4+5*(4.5+6)”。有可能吗?然后使用
\+\\\\\\\*
你可以@Jovani使用
“[+*\(\\)\\\.\””
@TimBiegeleisen的答案很好,但是如果我是你,我会看看正则表达式是如何构建的:然后你可以使用一个在线工具来尝试你的正则表达式(比如),你也可以专注于数学,下面是一个关于这个主题的问题示例:你是否计划计算一个嵌套的算术表达式?不要使用正则表达式,使用解析器。您是否计划对嵌套算术表达式求值?不要使用正则表达式,使用解析器。