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

时间:2016-02-22 18:32:54

标签: java string java.util.scanner replaceall

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

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 String对象的东西。

现在,当您输入9 * 5.3时,您看到此方法的方式仅生成9。第一个空间之后的所有东西都被丢弃了。

我已经尝试查找可能导致此问题的原因我不理解并在API文档中查找但未见任何内容。

我非常感谢您帮助我更好地理解为什么我的Scanner对象(在这种情况下为String infix = keyboard.next();)与普通String newInfix = "9 * 5.3;对象的处理方式不同? / p>

1 个答案:

答案 0 :(得分:1)

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

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

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