我必须将一个infix操作转换为一个后缀操作,但是必须将infix操作输入为每行一个字符。因此,您无需输入以下内容:3-2,而是需要输入以下内容:
3
-
2
我有一个想法,使用=='\ n'来确定输入的字符是否为下一行函数,这样就可以确定方程式的结尾,但是它不起作用。我尝试将其替换为其他字符,例如=='e',并且效果很好。我该怎么做才能解决此问题?
String string = "";
Scanner input = new Scanner(System.in);
boolean flag = true;
while (flag==true)
{
char charIn = input.next().charAt(0);
string = string + charIn;
if (charIn=='e') //inputting 'e' gives me my desired result
{
flag = false;
}
}
//code that passes string to InfixToPostfix method and prints out the answer. this part works fine
答案 0 :(得分:1)
您没有指定这是学校作业还是有一定限制,因此,这个答案肯定是在黑暗中拍摄的。
我建议在循环中使用StringBuilder
并读取nextLine()
而不是简单地next()
。这样,您可以确定条目是否为空(即,按下Enter键而不输入字符)。
此外,我们仍然应该允许用户输入多个字符(尝试输入22
作为数字时会发生的情况)。放弃使用char
类型即可。
public static void main(String[] args) {
StringBuilder string = new StringBuilder();
Scanner input = new Scanner(System.in);
boolean flag = true;
while (flag) {
// Capture all characters entered, including numbers with multiple digits
String in = input.nextLine();
// If no characters were entered, then the [ENTER] key was pressed
if (in.isEmpty()) {
// User is done adding characters; exit the loop
flag = false;
} else {
// Otherwise, get the text entered and add it to our final string
string.append(in);
}
}
System.out.println("Final String: " + string);
}
这符合您的需求吗?
答案 1 :(得分:0)
这应该做您想要的。仅读取第一个字符有其局限性。
String string = "";
Scanner input = new Scanner(System.in);
boolean flag = true;
while (flag==true)
{
String nextLine = input.nextLine();
char charIn;
if(nextLine.length() > 0) {
charIn = nextLine.charAt(0); //This is bad idea as you can only operate on single digit numbers
System.out.println("charIn = " + charIn);;
string = string + charIn;
}
else
flag = false;
}