主题:【求助】问个弱智Java问题 -- cartman
共:💬8 🌺2 新:
复 再请进
经过尝试,发现hasNext()或者hasNextLine(0或者hasNext(pattern)等不能在next()前连用。否则会导致Scanner无限读取。。。while循环无法停止。。。
突然想起来,next()是取出,凡是带has的都不取出。我的循环里面如果has...为否,就直接进行下一次认证了。所以才导致无限循环的。
如果无论是否与reg exp匹配都取出字串,就正常了。
另一个版本:
try
{
File file = new File(fileName);
Scanner scanner = new Scanner(file);
// String tmp;
scanner.useDelimiter("[\\p{javaWhitespace}&&[^ ]]+");
while (scanner.hasNext())
{
// tmp = scanner.next();
// if (tmp.matches("(?=^\\+)..*"))
// {
// System.out.println(tmp);
// }
if (scanner.hasNext("(?>-)..*"))
{
System.out.println(scanner.next());
}
else
{
System.out.println("Reg Exp Not Foundin seq: " + scanner.next());
}
}
scanner.close();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}