Java Scanner的使用和hasNextXXX()的用法说明
程序员文章站
2022-04-02 20:00:08
目录输入输出输出输入使用scanner读取使用scanner循环读取n个数字/字符串关于scanner中nextxxx()须注意的一点输入输出输出基本语法system.out.println(msg)...
输入输出
输出
基本语法
system.out.println(msg); //输出一个字符串,自带换行 system.out.print(msg); //输出一个字符串,不带换行 system.out.printf(msg); //格式化输出,和c语言相同
例如:
public class sannerdemo { public static void main(string[] args) { system.out.println("hello world!"); system.out.print("hello world!"); string str = "hello world"; system.out.printf("%s\n",str); } }
快捷键推荐:在这里,如果使用的是 idea的话,可以输入sout然后回车,会自动输出 system.out.println();
输入
使用scanner读取
首先需要导入==import java.util.scanner;==的包,然后 scanner sc =new scanner(system.in);,这段代码的主要作用是,从键盘中输入中读取数据。
然后读取数据:
next()、nextint()和nextline()的区别;
import java.util.scanner; public class sannerdemo { public static void main(string[] args) { scanner sc = new scanner(system.in); int i = sc.nextint(); system.out.println(i); //读取int型的数据 //读取一行数据 string s1 = sc.nextline(); system.out.println(s1); //读取字符串 string s2 = sc.next(); system.out.println(s2); }
nextint():
int i = sc.nextint(); system.out.println(i); //读取int型的数据
可以读取数字,但是遇到空格,只能读取空格前的数字。
next():
// //读取字符串 string s2 = sc.next(); system.out.println(s2);
可以读取字符串,但是遇到空格,只能读取空格前的数字。
nextline():
//读取一行数据 string s1 = sc.nextline(); system.out.println(s1);
可以读取字符串,并读取这一行 ,但是遇到回车结束。
注意:
next()和nextline()不可以同时使用:
例如:
//读取字符串 string s2 = sc.next(); system.out.println(s2); //读取一行数据 string s1 = sc.nextline(); system.out.println(s1);
这样只会输出一行,这是因为nextline()读取了回车,然后结束。
next()遇到空客会结束。
使用scanner循环读取n个数字/字符串
hasnextint()的使用
import java.util.scanner; public class sannerdemo { public static void main(string[] args) { scanner sc =new scanner(system.in); while (sc.hasnextint()){ int i = sc.nextint();//输入数字i system.out.println(i);//打印数字i } }
当程序开始之后,会一直循环输入并打印一个数字,知道ctrl+d结束程序
在这里sc.hasnextint()的结果是一个boolean的类型,当结果为false是结束。
注意:
ctrl+d用来结束循环输入多个数据
同理:
这些方法都可以用于循环数据输入。
关于scanner中nextxxx()须注意的一点
public static void main(string[] args) { // todo code application logic here scanner s = new scanner(system.in); //需要注意的是,如果在通过nextint()读取了整数后,再接着读取字符串,读出来的是回车换行:"\r\n",因为nextint仅仅读取数字信息,而不会读走回车换行"\r\n". //所以,如果在业务上需要读取了整数后,接着读取字符串,那么就应该连续执行两次nextline(),第一次是取走整数,第二次才是读取真正的字符串 int i = s.nextint(); system.out.println("读取的整数是"+ i); string rn = s.nextline();//读取到的是空格 string a = s.nextline();//读取到的是字符串 system.out.println("读取的字符串是:"+a); }
ps:nextdouble,nextfloat与nextint是一样的
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
推荐阅读
-
详解java中的深拷贝和浅拷贝(clone()方法的重写、使用序列化实现真正的深拷贝)
-
微信小程序授权 获取用户的openid和session_key【后端使用java语言编写】,我写的是get方式,目的是测试能否获取到微信服务器中的数据,后期我会写上post请求方式。
-
6.Java基本语法-----Scanner类的使用
-
Java的类与对象定义和使用
-
Java基础学习-基本数据类型变量的定义和使用
-
Java开发工程师基础Math,Random,Scanner类的使用
-
Java中异常上抛和异常捕捉的具体使用案例
-
为什么不建议使用Date,而是使用Java8新的时间和日期API?
-
Java日期时间API系列30-----Jdk8中java.time包中的新的日期时间API类,减少时间精度方法性能比较和使用。
-
解决Spring Boot和Feign中使用Java 8时间日期API(LocalDate等)的序列化问题