Java基本的程序结构设计 基本类型的输入输出
读取输入:
java.util.Scanner
一个可以使用正则表达式来分析基本类型和字符串的简单文本扫描器。
了解:
Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的 next 方法将得到的标记转换为不同类型的值。
例如,以下代码使用户能够从 System.in 中读取一个数:
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
再看一个例子,以下代码使 long 类型可以通过 myNumbers 文件中的项分配:
Scanner sc = new Scanner(new File("myNumbers"));
while (sc.hasNextLong()) {
long aLong = sc.nextLong();
}
扫描器还可以使用不同于空白的分隔符。下面是从一个字符串读取若干项的例子:
String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
System.out.println(s.nextInt());
System.out.println(s.nextInt());
System.out.println(s.next());
System.out.println(s.next());
s.close();
输出为:
1
2
red
blue
以下代码使用正则表达式同时分析所有的 4 个标记,并可以产生与上例相同的输出结果:
String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input);
s.findInLine("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)");
MatchResult result = s.match();
for (int i=1; i<=result.groupCount(); i++)
System.out.println(result.group(i);
s.close();
扫描器所使用的默认空白分隔符通过 Character.isWhitespace 来识别。
关于File的相对目录:
了解:
如果在创建一个File的时候,使用了相对目录,那么:
相对路径名必须使用来自其他路径名的信息进行解释。默认情况下,java.io 包中的类总是根据当前用户目录来分析相对路径名。此目录由系统属性 user.dir 指定,通常是 Java 虚拟机的调用目录。
也就是说相对于user.dir的目录。所以我们尽量不会使用相对目录,这里遇到了,所以标注下,了解下。
文本输出:
java.io.PrintWriter
向文本输出流打印对象的格式化表示形式。此类实现在 PrintStream 中的所有 print 方法。它不包含用于写入原始字节的方法,对于这些字节,程序应该使用未编码的字节流进行写入。
这个类的作用是把内存中的对象,以格式化文本的方式,输出到流中。它的api如下:
java.io.PrintStream和java.io.PrintWriter的api基本一样,只不过一个是通过字节的方式来输出,一个是字符的方式,不过这都是内部实现上。
这两个类很少使用,因为System.out使用的是PrintStream,我们这里了解一下。
Java基本的程序结构设计 基本类型的输入输出的更多相关文章
- Java基本的程序结构设计 字符类型
char类型 char是2个字节,和short一样. char用单引号来表示. char可以通过数字来表示,也可以通过字母来表示,也可以通过unicode编码单元来表示,特殊字符还可以通过\+字符来表 ...
- Java基本的程序结构设计 大数操作
大数操作 BigInteger 不可变的任意精度的整数.所有操作中,都以二进制补码形式表示 BigInteger(如 Java 的基本整数类型).BigInteger 提供所有 Java 的基本整数操 ...
- Java基本的程序结构设计 整形和浮点型
整形: int 4字节 short 2字节 long 8字节 byte 1字节 int的大小差不多是20亿. 整形计算 如果两个int进行加减乘除数学运算的时候,最终的结果仍然是int,有可能出现了溢 ...
- Java基本的程序结构设计 数组
声明数组: int[] a; int a[]; 两种方式.一般选择第一种,比较一目了然. 初始化,必须指定长度: int[] a = new int[10]; int[] a = {1,2,3}; 初 ...
- Java基本的程序结构设计 控制流程
控制流程 java的控制流程和C和C++基本一致,只是不能使用goto语句,不过break语句可以带标签,实现从内层循环跳出的目的.标签可以放在for或者while前面.如下: package com ...
- 程序结构设计理论(Android)
程序结构设计理论(Android) 作者:邓能财 2019年9月24日 个人简介 姓名:邓能财 年龄:26 毕业学校:东华理工大学 院系:理学院 专业:信息与计算科学 邮箱:2420987186@qq ...
- java:警告:[unchecked] 对作为普通类型 java.util.HashMap 的成员的put(K,V) 的调用未经检查
java:警告:[unchecked] 对作为普通类型 java.util.HashMap 的成员的put(K,V) 的调用未经检查 一.问题:学习HashMap时候,我做了这样一个程序: impor ...
- 使用IzPack打包JAVA Web应用程序
使用IzPack打包JAVA Web应用程序步骤如下: 这里使用IzPack-4.3.5 + launch4j-3.1.0-beta1-win32.zip(绿色版)对Web应用程序打包,打包后即可对我 ...
- 《疯狂Java:突破程序员基本功的16课》读书笔记-第二章 对象与内存控制
Java内存管理分为两个方面:内存分配和内存回收.这里的内存分配特指创建Java对象时JVM为该对象在堆内存中所分配的内存空间.内存回收指的是当该Java对象失去引用,变成垃圾时,JVM的垃圾回收机制 ...
随机推荐
- [flask]分页显示列表
添加分页支持的视图函数 app.py @app.route('/search') def search(): page = request.args.get('page', 1, type=int) ...
- [SQL]数据库常用语句
1.使用旧表创建新表 SELECT * INTO CC FROM AA ; (适用于版本SQL SERVER)
- template要加s,重启服务,不然报错
- 本地虚拟机部署线上php程序---不需要修改数据库信息
1.特别注意:拿来线上php程序后一般是不需要修改config.php里面的数据库连接信息的,如果修改了会报错:站点已关闭.所以 2.5 步骤是需要省略的.如果拿来的是最开始的php源码,需要配置原始 ...
- java:javaScript(定义方式,循环语句,函数与参数,事件机制,控制台记录,event事件获取键盘ascii,confirm和prompt,事件和内置对象,获取input,点击更换背景色)
1. 定义JS的两种方式: <!DOCTYPE> <html> <head> <meta charset="UTF-8"></ ...
- 【神经网络与深度学习】在Windows8.1上用VS2013编译Caffe并训练和分类自己的图片
最近想熟悉一下深度学习,体验了一下Caffe,简单写写训练和分类的过程: 1.下载Caffe VS2013工程:https://github.com/Microsoft/caffe 2. 解压并用VS ...
- Mac OS X 11中的/usr/bin 的“Operation not permitted”
更新了 Mac OS X 11后发现,MacVim 不再能够通过Terminal用命令打开了. mvim hello.txt 于是尝试将 mvim 重新复制到/usr/bin/中去 sudo cp - ...
- Maven从入门到精通(一)
maven是一个项目管理工具,我的后续将会根据这个思维导图给大家由浅到深讲解Maven是如何管理我们的项目,以及我们如何更好的使用Maven maven在开发过程中功能主要有三个方面: 管理依赖 ...
- 交换机安全学习笔记 第六章 IPV4 ARP攻击
ARP欺骗攻击 常用工具: dsniff(Linux/windows).ettercap(Linux/windows).cain(仅windows). ARP欺骗攻击的目的是嗅探发往某主机的所有IP ...
- 字典树(trie树) 后缀树 广义后缀树
转自:http://www.cnblogs.com/dong008259/archive/2011/11/11/2244900.html (1)字典树(Trie树) Trie是个简单但实用的数据结构, ...