public class ScannerTest {
protected Scanner scan;
public ScannerTest(String s) {
Scanner scan = new Scanner(s);
}
public void getone() {
if (scan.hasNext()) {
String temp = scan.next();
temp = temp.replaceAll("[\[\](){}]", "");
System.out.println(temp);
}
}
public static void main(String[] args) {
String s = "(abcd) (defg) (w)";
ScannerTest test = new ScannerTest(s);
Scanner rando = new Scanner(s);
System.out.println(rando.next());
System.out.println(rando.hasNext());
test.getone();
}
}
您是所谓的变量阴影的受害者。带线路
Scanner scan = new Scanner(s);
您正在声明一个局部变量扫描,而不是在ScannerTest类中初始化您的成员扫描。将上述行更改为
scan = new Scanner(s);
它将按要求工作。。。
完整的源代码
import java.util.Scanner;
public class SomeClass {
protected Scanner scan;
public SomeClass(String s) {
scan = new Scanner(s);
}
public void getone() {
if (scan.hasNext()){
String temp = scan.next();
temp = temp.replaceAll("[\[\](){}]","");
System.out.println(temp);
}
}
public static void main(String[] args) {
String s = "(abcd) (defg) (w)";
SomeClass test = new SomeClass(s);
Scanner rando = new Scanner(s);
System.out.println(rando.next());
System.out.println(rando.hasNext());
test.getone();
}
}
对奇怪的格式表示歉意,这是我的第一篇文章。在getone((方法中引发了null指针异常。首先在hasNext((,如果我去掉它,在next((。