从扫描仪 (System.in) 输入中删除空格

Removing Spaces from Scanner (System.in) Input

现在我正在研究用 "infix" 符号表示的方程式,并在执行我的程序的其余部分之前删除该字符串中的任何 space。现在,在字符串中没有任何 space 的情况下,我在 return 中收到了正确的 "Postfix" 等式。但出于某种原因,在执行我的 "Postfix" 方法之前,我似乎无法删除使用 new Scanner(System.in); 输入的字符串的 space。这是我的文件的主要方法:

public static void main(String[] args){
    Scanner keyboard = new Scanner(System.in);
    System.out.print("Enter the equation you'd like to evaluate: ");
    InfixToPostFix postFixString = new InfixToPostFix();
    String infix = keyboard.next();
    String newInfix = infix;
    //String newInfix = "9 * 5.3";
    //String deleteSpaceInInfix = newInfix.replace(" ", "");
    //System.out.println("deleteSpaceInInfix: " + deleteSpaceInInfix);

    System.out.println("Postfix representation: " + postFixString.InfixToPostfix(infix));
}

现在我已经记下了我尝试测试的三行,同时使用扫描仪信息记下了这些行。这样做时,注释掉的行的结果是:9*5.3 正如预期的那样。所以我相信它与 Scanner 字符串对象有关。

你现在看到这个方法的方式,当输入 9 * 5.3 时只产生 9。第一个 space 之后的所有内容都将被删除。

我试图查找导致这个我不理解的问题的可能原因,并在 API 文档中进行了查找,但没有看到任何内容。

如果有任何信息可以帮助我更好地理解为什么我的 Scanner 对象(在本例中为 String infix = keyboard.next();)的处理方式与普通的 String newInfix = "9 * 5.3; 对象不同,我将不胜感激?

Scanner 的默认分隔符是空格。如果要阅读整行,请使用 nextLine()

Scanner keyboard = new Scanner(System.in);
String infix = keyboard.nextLine();
infix = infix.replace(" ", "");
System.out.println(infix);

注意:还有hasNextLine()检查输入中是否有另一行。