我环顾四周,但找不到任何有帮助的东西。基本上我正在编写一段代码来获取数字列表作为输入。但是我想要用逗号作为分隔符输入数字。
这是我的代码片段。
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 我是新注册的,所以我不确定这是否是正确的提问方式。希望一切都好。
你的代码很好,但你似乎把它放错了你的班级中。
检查你放置代码的位置,它应该放置在构造函数、方法中,或者 - 在你的情况下不太可能 - 静态初始化块。
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...
}
代码片段本身没问题,但你放错了地方。您没有在类中定义方法。
像这样再试一次:
public static void main(String[] args) {
Scanner inputTreeOne = new Scanner(System.in);
inputTreeOne.useDelimiter(",");
while (inputTreeOne.hasNext()) {
System.out.println(inputTreeOne.next());
}
}
您还没有包含足够的代码来确定(更新 - 您现在已经有了),但我希望您将这些声明放在类的顶层;即不在方法内。
例如这样:
import java.util.Scanner;
public class Test {
Scanner inputTreeOne = new Scanner(System.in);
Scanner inputTreeTwo = new Scanner(System.in);
inputTreeOne.useDelimiter(",");
....
}
前两个声明在语法上是正确的。
您拨打
useDelimiter
的线路不正常。这是一个语句而不是声明,并且您不能将语句放在类的顶层。
为什么?因为Java语法不允许!
您很可能需要在构造函数中设置扫描仪......
例如:
import java.util.Scanner;
public class Test {
Scanner inputTreeOne = new Scanner(System.in);
Scanner inputTreeTwo = new Scanner(System.in);
public Test() {
inputTreeOne.useDelimiter(",");
}
....
}
或者也许将所有三行放在一个方法中更合适。
我还应该注意,为同一输入流创建两个单独的扫描仪“可能”是不正确的。您可能会因“错误”扫描仪缓冲的前瞻字符而陷入各种麻烦。 使用单个扫描仪,并且(如果需要)设置和重置
nextXxxx
调用之间的分隔符,等等。