我环顾四周,但我无法找到任何有用的东西。基本上我正在编写一段代码来获取数字列表作为输入。但是我想用逗号作为分隔符输入数字。
这是我的代码段。
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我刚刚在这里注册,所以我不确定这是否是提出问题的正确方法。我希望没事。
答案 0 :(得分:2)
代码片段本身是可以的,但你放错了位置。你没有在你的班级中定义一个方法。
再试一次:
public static void main(String[] args) {
Scanner inputTreeOne = new Scanner(System.in);
inputTreeOne.useDelimiter(",");
while (inputTreeOne.hasNext()) {
System.out.println(inputTreeOne.next());
}
}
答案 1 :(得分:2)
您没有提供足够的代码来确定(更新 - 您现在有),但我希望您将这些声明放在类的顶层;即不在某种方法中。
就像这样:
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
个调用之间设置和重置分隔符等。
答案 2 :(得分:1)
您的代码很好,但似乎您在课堂上放错了地方。
检查代码的放置位置,它应放在构造函数中,方法或 - 在您的情况下非常不可能 - 静态初始化块。
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...
}