[疯狂Java]基础类库:命令行参数、Scanner

来源:互联网 发布:hash算法详解 编辑:程序博客网 时间:2024/06/17 03:09

1. Java命令行参数:

    1) 即main方法的参数String[] args;

    2) 这里就只声明三点:

         1) 命令行参数是从程序名称之后开始算的:java JavaApplication arg1 arg2 arg3 ...

         2) args[0]是第一个参数arg1,而并非程序名JavaApplication;

         3) 命令行参数是用空格作为分隔符的,如果参数本身是包含空格的,则该参数应该用双引号""引起来,避免其中的空格被当做参数分隔符!!


2. Scanner:

    1) 是一种基于正则表达式的文本扫描器,可以扫描文本中的字符串(模式)、数字等;

    2) 它是一种高级处理流,可以包装文件、键盘输入流、字符串等,对这些节点中的文本流数据进行解析;

    3) 构造器:

         i. 通用版本:Scanner(InputStream | File | Path source[, Charset cs]);

         ii. 分别重载了InputStream(键盘输入流就用这种)、File、Path,并且可以选择性指定字符集(毕竟像文件这种使用的字符集可以多种多样,容易产生乱码问题);

         iii. 还有一个String版本的:Scanner(String source);  // String就没有字符集这个选项,因为String肯定是Java程序内的数据,Java程序范围之内肯定都是Java自己的Unicode编码,因此没有Charset这个参数重载版本;

    4) 解析普通字符串:

         i. 解析的时候默认使用空白符(空格、制表、换行)作为字符串的分隔符(如果输入的是"abc def",那么也会被分成两个字符串"abc和def"!!一定要注意了;

         ii. 解析方法:

             a. boolean hasNext();  // 是否有下一个字符串,基于分隔符的

             b. String next();  // 获取下一个字符串并移动位置指针

!!所有的解析方法肯定都是先用hasNext判断是否能继续读取,然后再调用next读取下一个;

    5) 自定义分隔符:

         i. Scanner默认使用空白符分隔字符串,但是可以自定义这个分隔符;

         ii. Scanner useDelimiter(String pattern);  // 用一个正则表达式来作为分隔符

         iii. 简单的例子比如:scan.useDelimiter("\n"); 就是只以换行符作为分隔符,那么hasNext和next读取的单位就是行了而不是普通字符串了;

    6) 当然Scanner为了方便也提供了正行读取的解析法:

         i. boolean hasNextLine();  // 是否有下一行

         ii. String nextLine(); // 直接读取下一行

!!Scanner的所有读取都会抛弃分隔符,也就是说上面的方法读取之后都不包含空白符、换行符;

    7) 解析数字:

         i. boolean hasNextType(); // 是否有下一个type类型的数据

         ii. type nextType(); // 读取下一个type类型的字符串并解析成type类型返回

!!这里type支持Java的所有基础类型(int、double、long等);

    8) 使用:肯定是用一个while循环判断是否有下一个可读取的内容(hasNext),然后在循环体中循环调用next读取内容

while (scn.hasNext()) {type val = next();处理代码...}


0 0
原创粉丝点击