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
调用之间的分隔符,等等。
我环顾四周,但找不到任何有用的东西。基本上我正在编写一段代码来获取数字列表作为输入。但是我希望用逗号作为分隔符输入数字。
这是我的代码片段。
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
调用之间的分隔符,等等。