首页 > 编程语言 >Java Scanner中一起使用next()和nextLine()方法会出现什么情况?

Java Scanner中一起使用next()和nextLine()方法会出现什么情况?

时间:2022-10-10 17:02:27浏览次数:51  
标签:nextLine Java Scanner System next 123 println

 Java中,我们可以通过 Scanner 类来获取用户的输入。先来看看next()方法的使用:

  

Java Scanner中一起使用next()和nextLine()方法会出现什么情况?_字符串

package WorkStudy;
import sun.rmi.runtime.Log;
import java.util.Scanner;
public class ScannerTest {

public static void main(String[] args) {

/* Scanner类中next的用法 */ //System.out.println("程序顶端输入验证: "); Scanner s = new Scanner(System.in); //从键盘接收数据
//next方式接收字符串 System.out.println("next方式接收: ");
//判断是否还有输入 if (s.hasNext()){
String str = s.next(); System.out.println("next()的值为: " + str); }

输入

123

返回

next()的值为: 123

如果我们输入 123 456 hello world呢?

返回

123

这时候我们知道,使用next()方法时,输入中如果有空格、tab键等,next()只会获取空格前的有效字符,同时也会trim掉输入内容前的空格。不信我们试试

输入

       123 3456 5555

返回

123


下面看下nextLine()的用法,还是使用同样的代码,只是需要修改下s.netLine()

package WorkStudy;
import sun.rmi.runtime.Log;
import java.util.Scanner;
public class ScannerTest {

public static void main(String[] args) {

System.out.println("为nextLine()准备的值: ");
String str2 = s.nextLine(); System.out.println("nextLine()的值为: " + str2);
s.close();
}

}

这次我们没有hasNext方法来判断是否有输入,直接上值

输入123

返回123

输入123 456 hello world

返回

123 456 hello world

说明nextLine()方法,只要有输入值,无论输入的是什么(只要不是回车键),都会显示出来

那该方法会不会trim掉输入字符前的空格呢?我们来试试

输入    123 456 trim hello

返回     123 456 trim hello

说明会显示


那么如果这两个方法用在一起会怎么样呢?

package WorkStudy;
import sun.rmi.runtime.Log;
import java.util.Scanner;
public class ScannerTest {

public static void main(String[] args) {

/* Scanner类中next的用法 */ //System.out.println("程序顶端输入验证: "); Scanner s = new Scanner(System.in); //从键盘接收数据
//next方式接收字符串 System.out.println("next方式接收: ");
//判断是否还有输入 if (s.hasNext()){
String str = s.next(); System.out.println("next()的值为: " + str); }


/* Scanner类中nextLine的方法 */ System.out.println("为nextLine()准备的值: "); String str2 = s.nextLine(); System.out.println("nextLine()的值为: " + str2);
s.close();
}

}

输入123

返回

next方式接收:
123
next()的值为: 123
为nextLine()准备的值:
nextLine()的值为:

然后发现后面的nextLine()值不能输入了,但是如果我输入 123 456 hello world 会返回什么呢?

返回

   456 hello world

为什么会这样呢?


原来是把回车符留在了缓冲区,下一次读取会碰到读取空字符串的情况

如果要避免这种情况,怎么办呢?

就是增加一句

String str3 = s.nextLine();

说明下面的nextLine()要读取再一次输入的值了,那么整体的程序为:

package WorkStudy;
import sun.rmi.runtime.Log;
import java.util.Scanner;
public class ScannerTest {

public static void main(String[] args) {

/* Scanner类中next的用法 */ //System.out.println("程序顶端输入验证: "); Scanner s = new Scanner(System.in); //从键盘接收数据
//next方式接收字符串 System.out.println("next方式接收: ");
//判断是否还有输入 if (s.hasNext()){
String str = s.next(); System.out.println("next()的值为: " + str); }


/* Scanner类中nextLine的方法 */ System.out.println("为nextLine()准备的值: "); String str3 = s.nextLine(); String str2 = s.nextLine(); System.out.println("nextLine()的值为: " + str2);
s.close();
}

}

返回为: 

next方式接收:
123 456 789
next()的值为: 123
为nextLine()准备的值:
123 456 789
nextLine()的值为: 123 456 789


不过我们也发现,之前输入123 456 789,增加了一句之后,第一次输入的值都会清除掉


java不简单呀,一个类中一个方法就有很多规则,很多都是在使用中才发现的。

标签:nextLine,Java,Scanner,System,next,123,println
From: https://blog.51cto.com/u_11894/5744769

相关文章

  • Java运算符
    Java运算符逻辑运算符与&&,或||,非!逻辑与运算:两个结果都为真,结果才为true,如果前面代码判断为错,后面则不执行。逻辑或运算:两个变量有一个为真,则结果才为true。逻辑......
  • Java 多线程(四)Lambda表达式
    Lamda表达式λ希腊字母表中排序第十一位的字母,英语名为Lambda避免匿名内部类定义过的多其实质属于函数式编程的概念理解函数式接口是学习Java8Lambda表达式的关键所......
  • Java 我的第一个hello word
         项目—右键—选中添加框架的支持 选中“WebApplication”,然后确定  右键src,新建一个类          ......
  • 使用 idea2021(汉化版)创建一个java程序
            建好以后是这样的 在左边的项目栏建好的项目下右键【src】,选择【新建】,选择【Java类】  输入文件名HelloWorld按回车。即可创建完成......
  • 005Java开发环境搭建
    005Java开发环境搭建1、JDK下载与安装(1)卸载首先我们先来学习一下如何卸载JDK。删除Java的安装目录(jdk整个包)。删除环境变量里的“JAVA_HOME”。删除Path下关于Java......
  • Java技术选择题1
                            ......
  • JavaScript高级程序设计笔记04 变量、作用域与内存
    变量、作用域与内存变量特定时间点一个特定值的名称。分类原始值:按值访问复制:两个独立使用、互不干扰引用值(由多个值构成的对象):按引用访问操作对象时,实际上......
  • Java HashMap getOrDefault() 方法
    参考链接:https://www.runoob.com/java/java-hashmap-getordefault.htmlhttps://blog.csdn.net/weixin_43263961/article/details/86513880......
  • 004Java的一些基本概念
    004Java的一些基本概念1、Java特性和优势Java至少具有以下特性:简单性(没有头文件、没有指针运算、也没有分配内存等操作)面向对象(万物皆对象)可移植性(一次编写,到处运行......
  • 自己动手写ls命令——Java版
    自己动手写ls命令——Java版介绍在前面的文章Linux命令系列之ls——原来最简单的ls这么复杂当中,我们仔细的介绍了关于ls命令的使用和输出结果,在本篇文章当中我们用Java代......