public void process() throws InputMismatchException {
//System.out.println(code);
if(sc.findInLine("JP++") == null || sc.findInLine("START") == null){
throw new RuntimeException("Program has to start with 'JP++ _NAME_ START' ");
}
sc.nextLine();
while(sc.hasNext()){
if (sc.findInLine(Pattern.compile("JP......")) != "JP++ END" ){
Scanner r = sc;
if(!r.hasNextLine() || r.findInLine(Pattern.compile(".")) == null){
return;
}
System.out.println(sc.nextLine());
}
}
}
此代码是我当前正在使用的词法分析器的一部分。我已经过滤掉了,以防止扫描仪输出null并仍然输出:
hello
world
null
我的输入:" JP++ HELLO WORLD START \n hello \n world\n JP++ END"
我该如何解决这个问题
答案 0 :(得分:0)
我刚刚测试了这段代码:
String input = " JP++ HELLO WORLD START \n hello \n world\n JP++ END";
Scanner sc = new Scanner(input);
if(sc.findInLine("JP++") == null || sc.findInLine("START") == null){
throw new RuntimeException("Program has to start with 'JP++ _NAME_ START' ");
}
sc.nextLine();
while(sc.hasNext()){
if (sc.findInLine(Pattern.compile("JP......")) != "JP++ END" ) {
Scanner r = sc;
if(!r.hasNextLine() || r.findInLine(Pattern.compile(".")) == null){
return;
}
System.out.println(sc.nextLine());
}
}
从字面上看,这是您代码的复制和粘贴,除了输入(我也从您的帖子中从字面上复制了)和扫描程序声明之外。它打印出
你好
世界
,无null。无论您遇到什么问题,它都在其他地方。
编辑:正如@Pshemo所提到的,您还比较了错误的字符串。使用.equals()