我对Java非常陌生,并试图理解Scanner类。我正在使用示例代码来了解Scanner类的skip(String )方法。我稍微修改了一下代码,并将其更改为
import java.util.*;
public class ScannerDemo {
public static void main(String[] args) {
String s = "Hello World! 3 + 3.0 = 6.0 true ";
// create a new scanner with the specified String Object
Scanner scanner = new Scanner(s);
// changed the string to skip
scanner.skip("World");
// print a line of the scanner
System.out.println("" + scanner.nextLine());
// close the scanner
scanner.close();
}
}我期望的输出是
Hello ! 3 + 3.0 = 6.0 true但我得到了NoSuchElementException。有人能指出我的错误吗?
发布于 2014-09-06 13:54:42
不是nextLine给了您异常,而是跳过(“World”)。
当扫描器开始时,它指向"Hello Word.“中的"H”,这是第一个字母。
然后你告诉他跳过,必须给出一个规则表达式的跳过。
现在,在单词"World“之后跳过的一个很好的正则表达式是:
scanner.skip(".*World");".*World“的意思是”每一个字符,无论多少次都跟着世界“。
这将把扫描仪移到"!“在"Hello“之后,因此nextLine()将返回
! 3 + 3.0 = 6.0 true"Hello“部分已经跳过了,按照跳过的方式。
发布于 2014-09-06 13:49:59
Scanner源字符串指向字符串中的第一个单词,即Hello。要获得预期的输出,它可能更简单,只需从字符串中删除单词即可。
s = s.replace("World", "");发布于 2014-09-06 13:53:17
你为什么要用扫描仪把它拿出来?可以很容易地在字符串中使用替换方法。
s = s.replace("World", "");https://stackoverflow.com/questions/25700922
复制相似问题