如何使用类似(input =='\ n')的东西来确定何时停止接受用户输入?

时间:2018-11-05 04:43:54

标签: java loops input char

我必须将一个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

2 个答案:

答案 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;
}