【问题标题】:Removing Spaces from Scanner (System.in) Input从扫描仪(System.in)输入中删除空格
【发布时间】:2016-02-22 18:32:53
【问题描述】:

现在我正在使用“中缀”表示法计算一个等式,并在执行我的程序的其余部分之前删除该字符串中的所有空格。现在,字符串中没有任何空格,我收到了正确的“后缀”等式作为回报。但由于某种原因,在执行“后缀”方法之前,我似乎无法删除使用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; 对象的处理方式不同,我将不胜感激?

【问题讨论】:

  • 您是否尝试使用 nextLine() 而不是 next() ?如果没有提供分隔符,scanner 将使用任何空白字符作为分隔符。这就是为什么它只返回 9。
  • 如上VT所说,next()只获取第一个单词,空格是分隔符。
  • 如果可以的话,我会给你所有的帮助。

标签: java string java.util.scanner replaceall


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 2019-11-08
    相关资源
    最近更新 更多