目录
输入输出-io流(input output)
以电脑为参考系:从外部向程序或电脑中输入一个数据--输入流 从电脑或程序向外部输出一个数据--输出流
系统输入输出--标准输入输出: 标准输出-键盘 System.out是java中标准输出对象 标准输入-键盘 System.in是java标准输入对象,从键盘读取数据内容
三种常用的输出方式: println( ) ;自带换行符可内部啥也不写直接当换行符使用 print( );不带换行,()中必须有参数 printf();和c语言使用方法一样 %d%c啥的
首先区分一下几个nextXXX(存储)的用法:
next 输入时碰到空格时就会结束,这时就获取了一个数据;下一次next是冲第二个开始获取,且跳过空格,若无数据则需要等待输入
一直回车,每次敲击回车都相当于在堆空间中开辟一行,若是如下 Scanner sc = new Scanner(System.in); if(sc.hasNext() ) { System.out.println("第一组"+sc.next()); System.out.println("第二组"+sc.next()); System.out.println("第三组"+sc.next()); } 输入: pipipi kakaka qiqiqiqi 输出:第一组pipipi 第二组kakaka 第三组qiqiqi
nextLine 与next相比就算碰到空格也能获取到,这就等于说它可以获取到带空格的字符串,但它碰到回车时便会结束。
总结:next方法不能录入空格,nextLine方法可以识录入空格。
再区分一下几个hasNextXXX(判断)的用法:
hasNext
是判断有没有下一个非空数据,有则为返回true,没有则一直阻塞等待在判断阶段。如果一直不输入字符,一直回车,整个线程会卡在这个输入的地方,直到有字符输入。
例:
//一直敲回车 Scanner sc = new Scanner(System.in); System.out.println(sc.hasNextLine()); //吃掉第一个输入的回车,输出true,跳到下一行代码执行 System.out.println(sc.hasNext()); //后面一直输入回车,由于hasNext是非空返true,其余阻塞,则这里线程会一直阻塞,除非输入一个非空内容 ————————————————————————-——————————————————————- Scanner sc = new Scanner(System.in); if(sc.hasNext() ) { System.out.println("第一组"+sc.nextLine()); System.out.println("第二组"+sc.nextLine()); System.out.println("第三组"+sc.nextLine()); } 输入: pipipi kakaka qiqiqiqi 输出:第一组 pipipi kakaka qiqiqiqi
第一组nextLine录入了空格,以回车结束。这里回车后一直等待第二组的nextLine。
hasNext返回一个结果true的同时,在堆空间中开辟一块专门用于存放刚刚输入的字符串,用于下次next或者nextLine:
hasNextLine 跟hasNext一样,但是它的不同就是它能判断含有空格的字符串,即数据是被回车隔开的,空格会被当成是数据的一部分,即敲个回车就是一次true判断。不会阻塞。总结:hasNext和hasNextLine的返回值都是boolean类型;不可能返回false,等待时只会前者阻塞后者不阻塞;前者非空返true后者回车返回true。回车为结束.
从键盘读内容,用Scanner类:
首先导入包:import java.until.Scanner;
Scanner sc=new Scanner(System.in); //产生一个系统的输入对象
int a=sc.nextInt(); //从键盘读取一个整形
String str=sc.nextLine(); //从键盘读取一个字符串,以换行符为终止条件
double d=sc.nextDouble(); //从键盘读取一个浮点型
————————————-————————————-————————————-————————————-
当读数字a 操作者输入数字后回车
nextLine()在后面会读取回车;可多用一个nextLine吃掉回车防止误读
多次读取数据: 用sc.hasNextXX();
场景:循环读多次整数求其均值,当读到非整数时读取终止,返回false
Scanner sc=new Scanner(System.in);
While(sc.hasNextInt()){ //非int时条件为false,while循环将不再执行
}
若为hasNextLine(); //String类会读回车,难以结束,可以用特殊字符结束。 win下用Ctrl+ Z; 如果不起作用可能为快捷键冲突。 mac下用command+d
输出特殊字符:
想输出引号"" 可加转义字符\ 例:System.out.println("\"我是内容\""); 输出为 "我是内容"
System.out.println("\\"); 输出为 \