Java 扫描仪 useDelimiter() 语法错误

Java Scanner useDelimiter() syntax error

我环顾四周,但找不到任何有用的东西。基本上我正在编写一段代码来获取数字列表作为输入。但是我希望用逗号作为分隔符输入数字。

这是我的代码片段。

import java.util.Scanner;

public class TreeUtils {
    Scanner inputTreeOne = new Scanner(System.in);
    Scanner inputTreeTwo = new Scanner(System.in);

    //Changing default whitespace delimiter of Scanners to comma.
    inputTreeOne.useDelimiter(","); 

}

我遇到的问题是我的 useDelimiter() 方法存在语法错误。错误如下(来自eclipse):

Multiple markers at this line
    - Syntax error on token "","", delete this token
    - Syntax error on token(s), misplaced 
     construct(s)

谢谢。 P.S 我是新注册的,所以我不确定这是不是正确的提问方式。希望一切顺利

你的代码没问题,但你似乎把它放错了 class。

检查你把代码放在哪里,它应该放在构造函数中,方法或者——在你的情况下不太可能——静态初始化块。

private void foobar() {

  // Do some cool stuff...

  Scanner inputTreeOne = new Scanner(System.in);
  Scanner inputTreeTwo = new Scanner(System.in);

  //Changing default whitespace delimiter of Scanners to comma.
  inputTreeOne.useDelimiter(",");

  // Do some other stuff...

}

代码片段本身没问题,但你放错了地方。您没有在 class.

中定义方法

像这样重试:

public static void main(String[] args) {
  Scanner inputTreeOne = new Scanner(System.in);
  inputTreeOne.useDelimiter(",");
  while (inputTreeOne.hasNext()) {
    System.out.println(inputTreeOne.next());
}

}

你没有包含足够的代码来确定(更新 - 你现在已经),但我希望你把这些声明放在 class;即不在方法内。

例如这样:

import java.util.Scanner;
public class Test {
    Scanner inputTreeOne = new Scanner(System.in);
    Scanner inputTreeTwo = new Scanner(System.in);

    inputTreeOne.useDelimiter(","); 
    ....
}

前两个声明在语法上没有问题。

您调用 useDelimiter 的线路不正确。那是一个语句而不是声明,你不能将语句放在 class 的顶层。

为什么?因为 Java 语法不允许!

您很可能需要在构造函数中设置扫描仪...

例如:

import java.util.Scanner;
public class Test {
    Scanner inputTreeOne = new Scanner(System.in);
    Scanner inputTreeTwo = new Scanner(System.in);

    public Test() {
        inputTreeOne.useDelimiter(","); 
    }
    ....
}

或者将所有三行都放在一个方法中可能更合适。


我还应该注意,为同一个输入流创建两个单独的扫描器可能是不正确的。您可能会因 "wrong" 扫描器缓冲的前瞻字符而陷入各种麻烦。

使用单个扫描仪,并且(如果需要)设置和重置 nextXxxx 调用之间的分隔符,等等。