- system.out是标准输出流
**system.in**
是标准输入流java输出语句允许输出一个赋值语句 如
int x=3;sout(x*=4); ->12
输出
-
格式化输出
double x = 10000.0 / 3.0;
System.out.printf("%8.2f",x); // 3333.33
8修饰符即输出8宽度,不足前面补空格。.2
表示小数精度为2,四舍五入%f
即输出float型 修饰符m :输出m宽度,不足前面补空格
- 修饰符.m:取小数点后m位,四舍五入
- 修饰符0m:输出m宽度,不足前面补0
- 修饰符-m:输出m宽度,左对齐,后面补空格
输入
Scanner
- 要读取标准输入流,需要构造一个Scanner对象,并且与
**标准输入流System.in**
相关联- Scanner 类定义在
**java.util.Scanner**
包
- Scanner 类定义在
next...()
是读取输入流中内容的方法nextLine()
:读取一行,并且保留输入流中的空格,然后返回字符串类型next()
:读取一行,遇到空格便结束读取nextInt()
:读取一个整数,并且返回
hasNext()
:判断用户还有没有输入,没有的话返回-1hasNextLine() hasNextInt() hasNextDouble() ...
这些衍生方法即判断是否有符合要求的有效输入,如是否还有整型数据的输入,没有整型输入即便是其他输入也会结束返回-1
- 注意next…()方法读取完一次后读取位置就会后移,并不是结束读取。但是不能使用nextLine,会出错
- close:关闭输入流。凡是IO流的类如果不关闭会一直占用资源,应该记得用完就及时关闭养成习惯 ```java Scanner scanner = Scanner(System.in); if(scanner.hasnext()){ String name = scanner.nextLine(); } scanner.close();
---
<a name="nVNjV"></a>
#### 读写文件
```java
Scanner in = new Scanner(Paths.get("myfile.txt"),"UTF-8");
//之后可以使用next等方法获取内容
/*注意Paths.get()方法的路径参数是一个字符串,所以传入File对象是不行的。 String.valueOf(file)方法可以将File对象转为字符串型 */
//----------------------------------------------------------------------
PrintWriter out = new PrintWriter("file.txt","UTF-8");// 如果文件不存在,则创建该文件
IO获取标准输入流
- 远不如Scanner方便
try{ InputStreamReader input=new InputStreamReader(System.in); BufferedReader reader=new BufferedReader(input); String s; while((s=reader.readLine())!=null) { System.out.println(s); } reader.close(); } catch (IOException e){ System.out.println(e); }