几句话直观理解java中Scanner类的next()、nextLine()、nextInt() 您所在的位置:网站首页 scanner使用方法idea 几句话直观理解java中Scanner类的next()、nextLine()、nextInt()

几句话直观理解java中Scanner类的next()、nextLine()、nextInt()

2024-01-14 23:44| 来源: 网络整理| 查看: 265

很多关于上述几个方法的介绍都非常晦涩,很复杂,我们在处理相关问题时只需要记住以下规律即可: (1)Scanner是一个扫描器,对于键盘输入或者文件中的数据,先存到缓存区等待读取,它判断读取结束的标示是:空格,回车,tab 等; (2)next()和nextInt()方法读取到任意间隔符(如空格和回车)就结束,nextLine()读取到回车结束也就是“\r”,next()返回值为String类型,nextLine()返回值为String类型,nextInt()返回值为Int类型。

读取结束后光标(这里理解为读取起点)会移到当前结束位置后,如果接着读上一次输入的内容或者连续读取文件,会从光标的最新位置开始读

返回值为String类型的好处就是不管输入的是字符串还是数字,都会判断为字符串,并正确输出。

目录

1.从键盘输入读取数据时

2.从txt文件中读取数据时

1.从键盘输入读取数据时

通过System.in获取键盘输入数据时,scanner = new Scanner(System.in)语句出现一行就输入一次,按回车(换行键结束输入当次输入),所以每次输入值的最后一个字符是回车符。

输入的内容取决于紧跟该语句的方法类型,分情况如下:

(1)如果紧跟的是nextInt()语句,则输入内容开头必须以“整数”或者“空格 整数”的形式,如: import java.util.Scanner; public class MyDemo { public static void main(String[] args) throws FileNotFoundException { Scanner scanner = new Scanner(System.in);//出现一行就输入一次,按回车(换行键结束输入) int m=scanner.nextInt();//由于紧跟输入语句的是nextInt()方法,所以上面输入的内容的开头必须是整数,或为空格+整数 System.out.println("键盘输入以整数开头,输出的是"+m);//打印结果 scanner = new Scanner(System.in); int n=scanner.nextInt(); System.out.println("键盘输入空格 整数开头,输出的是"+n);//打印结果 } }

输出结果为:

 

 (2)如果紧跟的是nextLine()语句,则键盘输入的内容随意,语句会获取输入的全部内容,因为方法的读取结束符为回车,回车键是当前内容输入结束时必须要按的(记住nextLine()语句返回值是String类型),程序如下: import java.io.FileNotFoundException; import java.util.Scanner; public class MyDemo { public static void main(String[] args) throws FileNotFoundException { Scanner scanner = new Scanner(System.in);//出现一行就输入一次,按回车(换行键结束输入) String m=scanner.nextLine();//由于紧跟输入语句的是nextLine()方法,所以上面输入的内容随意,语句会获取输入的全部内容 System.out.println("键盘输入以整数开头,输出的是"+m);//打印结果 scanner = new Scanner(System.in); String n=scanner.nextLine(); System.out.println("键盘输入以字符开头,输出的是"+n);//打印结果 } }

输出结果为:

 (3)如果紧跟的是next()语句,则键盘输入的内容也随意,但语句只读到输入内容的第一个间隔符位置(记住next()语句返回值也是String类型) import java.io.FileNotFoundException; import java.util.Scanner; public class MyDemo { public static void main(String[] args) throws FileNotFoundException { Scanner scanner = new Scanner(System.in);//出现一行就输入一次,按回车(换行键结束输入) String m=scanner.next();//由于紧跟输入语句的是nextLine()方法,所以上面输入的内容随意,语句读到输入内容中的第一个间隔符为止 System.out.println("键盘输入以整数开头,输出的是"+m);//打印结果 scanner = new Scanner(System.in); String n=scanner.next(); System.out.println("键盘输入以字符开头,输出的是"+n);//打印结果 scanner = new Scanner(System.in); String k=scanner.next(); System.out.println("键盘输入以空格开头,输出的是"+k);//打印结果 } }

输出结果为:

所以不管是 next()还是nextInt()语句,对于键盘输入内容的开头为空格时,都不会将空格作为分隔符,而是会读取空格后第一个符合所需类型的元素。但是nextLine()语句会将输入对象开头第一个空格也读取。

(4)当连续读取键盘的输入内容时 import java.util.Scanner; public class MyDemos { public static void main(String[] args) { Scanner scanner = new Scanner(System.in);//输入 String m=scanner.next(); System.out.println("读取第一个字符串,到空格结束,光标移到空格处,输出的是"+m); int n=scanner.nextInt(); System.out.println("读取上次结束位置后的第一个整数,光标移到整数后空格处,输出的是"+n); String k=scanner.nextLine(); System.out.println("从上次光标的最后位置读到换行符处,输出的是"+k); } }

输出结果:

  

2.从txt文件中读取数据时

位于项目文件夹的/res/MyDemo.txt文件中保存着以下数据:

运行以下程序:

import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class MyDemo { public static void main(String[] args) throws FileNotFoundException { String path = "res/"; String filename = "MyDemo.txt"; Scanner scanner = new Scanner(new File(path + filename)); String str=scanner.nextLine(); System.out.println("str:"+str); int m=scanner.nextInt(); System.out.println("m:"+m); String str2=scanner.nextLine(); System.out.println("str2:"+str2); String str3=scanner.next(); System.out.println("str3:"+str3); int p=scanner.nextInt(); System.out.println("p:"+p); } }

得到如下结果:

本例是对同一个文件内容的连续读取,所以需要判断光标(上一次读取结束的位置)的位置

nextLine()读取到回车结束,而文件中第一行6后面才有换行符,所以读到6结束,光标来到下一行

而next()和nextInt()方法读取到任意间隔符(如空格和回车)就结束,第二行中1后面就有空格符,所以m读到1就结束,光标移到1之后(-3之前),依此类推。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有