为了安全起见,我想指出在收到用户输入后我不想评估表达式或字符串。我想做的就是从用户那里获取一个字符串输入,然后在一个单独的行中分别打印字符串的每个标记
因此:如果输入的字符串是" 123 bc 76 hello +"然后它会打印" 123"," bc"," 76","你好"," +"分别在每一行。
我写了一个小程序,要求用户输入一个表达式(一个数学表达式),程序然后在不同的行上打印数字和运算符。
例如,
INPUT: 10 - 203/5
预期输出
10
-
203
/
5
以下是我为上述问题编写的代码:
import java.util.Scanner;
public class Sol {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String myString;
System.out.println("enter the expression : ");
myString = scanner.nextLine();
//System.out.println("your expresssion : " + myString + "\n");
while (scanner.hasNext()) {
if (scanner.hasNextInt()) {
int temp = scanner.nextInt();
System.out.println(temp);
}
else {
String operator = scanner.next();
System.out.println(operator);
}
}
}
}
我觉得问题非常简单,因此编写了上面的代码,认为我的逻辑是正确的。但是,当我运行程序时,我没有得到任何输出。在获取输入后,命令行光标只是一直闪烁,没有响应/输出等。
此外,当发生这种情况时,当我再次输入内容时(在运行过程中)并且如果它是单个标记,例如字符串标记或整数标记,则会打印出来。
也就是说,如果我输入10 + 203/55并按下Enter键,程序将保持闪烁的光标。没有输出。现在,如果此时我输入一个标记,例如" 20"或" /"或" abc"然后那个东西被打印出来并继续循环。该计划没有结束!
我实际上必须按ctrl + z才能退出执行!!
有谁能告诉我我的程序出错了?
另外,如果你能指出需要做些什么来给我提供我需要的输出,那将是非常有帮助的!
P.S。实际上我编写了一个程序来从文本文件中读取中缀表达式,将其转换为后缀,对其进行评估并将结果写入另一个文件。虽然程序对单个数字整数正常工作,但它总是因多个数字整数而失败。因此,我将代码修改为与上述代码非常相似的内容,以读取2位或更多长度的整数。但是,当我运行代码时,我得到了空指针异常。那时我决定编写上面的代码并检查我的逻辑是否正确(事实证明它不是!!)。
所以任何帮助,最终都会帮助我相应地修改我的中缀评估表达式。
提前多多感谢!!