Java 使用扫描仪分析findWithinHorizon问题

Java 使用扫描仪分析findWithinHorizon问题,java,parsing,java.util.scanner,binary-operators,Java,Parsing,Java.util.scanner,Binary Operators,在我现在正在工作的一个项目中,我需要使用Scanner类解析转义序列(在Linux中使用Java)。例如,为了在键盘中包含两个结束键,我最初编写了以下代码: if(sc.findWithinHorizon("(\\G\\e\\[4~)?",0).length() > 0 || sc.findWithinHorizon("(\\G\\eOF)?",0).length() > 0 ) { System.out.print("END"); //To see if it works 使

在我现在正在工作的一个项目中,我需要使用Scanner类解析转义序列(在Linux中使用Java)。例如,为了在键盘中包含两个结束键,我最初编写了以下代码:

if(sc.findWithinHorizon("(\\G\\e\\[4~)?",0).length() > 0 || sc.findWithinHorizon("(\\G\\eOF)?",0).length() > 0 ) {
  System.out.print("END"); //To see if it works
使用该代码,我没有得到任何输出(终端只是冻结)。看到这一点后,我将这两种情况分为两种不同的if:

 if(sc.findWithinHorizon("(\\G\\e\\[4~)?",0).length() > 0) 
   System.out.print("END"); 
 else if(sc.findWithinHorizon("(\\G\\eOF)?",0).length() > 0 )
   System.out.print("END");
然后它就起作用了。有人知道为什么不能和OR操作员一起工作吗


提前感谢。

您需要捕获findwithinhorizon解析为字符串的内容,然后进行比较。您在第一个if语句中所做的是两次解析sc。一次对某件事进行比较,然后第二次对文本的不同部分进行不同的比较

我怀疑这是你想要的行为。当你将地平线设置为0时,它将查看当前位置,然后将位置增加1,因此你的第二次调用是查看不同的索引。如果您真的到达了文件的末尾,我相信这会导致一些奇怪的行为,并解释为什么它会挂起