• 中文
    • English
  • 注册
  • 赞助本站

    • 支付宝
    • 微信
    • QQ

    感谢一直支持本站的所有人!

    • 查看作者
    • nextLine()使用注意事项:会接受\n

      昨天随便写了一个小程序,用到了nextLine(),在这里用nextLine()时遇到的一个小问题,总结一下

      首先,我们要知道next和nextLine()的区别,不知道同学,请点击这里查看

      接着,我们看一下这个小程序:

      按照我的意愿,是想着先提示我输入姓名,再提示我输入性别,然后分别打印我的姓名+性别,但是在我输入姓名后,程序并没有出来让我输入性别的提示,而是直接执行了后面的语句,仿佛默认给我把性别输入了一般,这是怎么回事呢?

      package tv.zhangjia.nextDemo;
      
      import java.util.Scanner;
      
      public class Test {
      	public static void main(String[] args) {
      		String str2 = "男";
      		Scanner input = new Scanner(System.in);
      		System.out.print("请输入你的姓名:");
      		String str = input.next();
      		
      		System.out.print("请输入你的性别:");
      		str2 = input.nextLine();
      		System.out.println(str + "的性别是" + str2);
      
      	}
      }
      
      输出:
      请输入你的姓名:
      输出:张甲
      输出:
      请输入你的性别:张甲的性别是//这里还没等我输入性别,直接执行下一句代码,打印输出了

      我们可以看到,在刚开始的时候,我们给str2赋予了初值为“男”,但是当我们输入姓名后,却直接把剩下的语句都执行了,而且最后输出的性别为空,这说明,str2的值在程序的执行过程中,是被改变了的,其实原因很简单:

      nextLine()会接收‘\n’换行符(虽然不会显示),和next()等一起使用的时候会接收到上一个输入的换行符。也就是说,当我们在输入姓名为“张甲”的时候,“张甲”被保存在str中,而我们输入张甲回车的换行符“\n”被保存在了str2中,所以当我们输入姓名后,一回车,就相当于改变了str2的值为“\n”,所以在最后打印的时候,输出我们的性别是空~

      而且不止是next(),nextDouble() ,nextFloat(), nextInt()等与nextLine()连用时都存在这个问题,那么有什么解决方法呢?其实也很简单,只需要在next()后面,加上nextLine()语句,,将“\n”过滤掉即可。 代码实现如下:

      package tv.zhangjia.students;
      
      import java.util.Scanner;
      
      public class Test {
      	public static void main(String[] args) {
      		String str2 = "男";
      		Scanner input = new Scanner(System.in);
      		System.out.print("请输入你的姓名:");
      		String str = input.next();
      		input.nextLine();
      		System.out.print("请输入你的性别:");
      		str2 = input.nextLine();
      		System.out.println(str + "的性别是" + str2);
      
      	}
      }
      输出:
      请输入你的姓名:
      输入:张甲
      输出:请输入你的性别:
      输入:男
      输出:
      张甲的性别是男

      我们可以看到,程序已经正常运行,打印出了我的性别~

      参考资料:

      路西法

      李响同学

       

    • 0
    • 0
    • 0
    • 1.4k
    • 请登录之后再进行评论

      登录
    • 做任务
    • 实时动态
    • 偏好设置
    • 返回顶部
    • 单栏布局 侧栏位置: