【Java基础】详细区分nextXX()hasNextXX()的几个用法,以及他们对空格回车的录入反应。

目录

首先区分一下几个nextXXX(存储)的用法:

再区分一下几个hasNextXXX(判断)的用法:

从键盘读内容,用Scanner类:                   

 多次读取数据:  用sc.hasNextXX();       

输出特殊字符:


输入输出-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("\\");                                  输出为  \

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值