Java中的字符串令牌化



我有以下代码

    System.out.println("Enter equation you want to calculate:");
    System.out.println("Equation can not have more than two variables");
    equation = input.next();
    StringTokenizer var = new StringTokenizer(equation,"");
    while (var.hasMoreElements())
    {
        System.out.println(var.nextToken());
    }

用户可以输入等式,例如A + BAlpha + Beta我希望令牌化器像 Alpha + Beta

但是我得到的输出只是第一个元素 Alpha

equation = input.next();只会读取下一个(空间划界)单词,而不是整个方程式。

您的问题不是令牌,而是您正在错误地收集输入。

尝试:

equation = input.nextLine();
If your input is "Alpha + Beta" , then the below code results in 
Alpha
+
Beta

StringTokenizer var = new StringTokenizer("Alpha + Beta"," ");
            while (var.hasMoreElements())
            {
                System.out.println(var.nextToken());
            }

在格式A'运算符'b的情况下,'operator'可能意味着+-*/中的任何一个,我建议您与正则表达式分开。REGEX101的演示。

(w+)([+-*/])(w+)

我建议您首先更换所有空间,以摆脱不必要的混乱。也不要忘记使用双\;

逃脱

让输入为: String input = "Alpha + Beta";

Pattern pattern = Pattern.compile("(\w+)(\+)(\w+)");
Matcher matcher = pattern.matcher(input.replace(" ",""));
String a = null;
String b = null;
String operator = null;
while (matcher.find()) {
    a = matcher.group(1);
    operator = matcher.group(2);
    b = matcher.group(3);
}

将从变量aoperatorb返回Alpha + Beta

尝试此代码

    System.out.println("Enter equation you want to calculate:");
    System.out.println("Equation can not have more than two variables");
    Scanner input = new Scanner(System.in);
    String equation = input.nextLine();
    StringTokenizer var = new StringTokenizer(equation, " ");
    while (var.hasMoreElements()) {
        System.out.println(var.nextToken());
    }

相关内容

最新更新