我有以下代码
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 + B
或Alpha + 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);
}
将从变量a
,operator
和b
返回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());
}