scanner标记读取方法,scanner接受字符

  scanner标记读取方法,scanner接受字符

  

目录

扫描仪输入结束标记扫描仪输入和理解扫描仪扫描仪输入内容理解(强调)注意

 

  00-1010最近开始复习java。我需要记下我不知道或需要注意的内容。

  包gt;导入Java . util . scanner;/* * *由克洛诺斯于2017/10/29创建。*/public class day 01 { public static void main(string[]args){ system . out . print(请输入值:);Scanner s=新扫描仪(system . in);while(s . has next()){ system . out . println(s . next());}}}我们输入“123 345 678”然后回车找到控制台打印。

  123

  345

  678

  我看了下scanner的api它是这么说的 :

  扫描仪使用分隔符模式将其输入分成标签,默认情况下匹配空白。

  然后,您可以使用不同的next方法将结果标签转换为不同类型的值。

  所以这里我们知道默认是空白匹配,所以我们输入的时候有一个空格,会一次读取到回车为止,但是你会发现我们最后一个数字后面没有空格,系统也是分数据的。

  可能到这里不知道我在说啥,看下个例子:

  包gt;导入Java . util . scanner;/* * *由克洛诺斯于2017/10/29创建。*/public class day 01 { public static void main(string[]args){ system . out . print(请输入值:);Scanner s=新扫描仪(system . in);s . usedelimiter(“”);//这里我们主动将系统分隔符设置为‘while(s . has next()){ system . out . println(s . next());}}}这里我们主动设置一个分隔符,然后像上次一样输入数据。输入后,按回车键的控制台效果如下:

  123

  345

  这里我们会发现第三个数字没有输出。为什么?我们发现在输入最后一个数字的时候,直接按了enter,没有输入我们设置的分隔符 。

  所以第三个数字是不打印的,我们可以输入“123 345 678”然后回车正常输出三个值,这样可以保证末尾有一个空格。

  再看另一段代码(注意这里有个洞)。我的要求是得到输入值。当输入值为“退出”时,我们结束输入。

  包gt;导入Java . util . scanner;/* * *由克洛诺斯于2017/10/29创建。*/public class day 01 { public static void main(string[]args){ system . out . print(请输入值:);Scanner s=新扫描仪(system . in);while(s.hasNext()){ if(quit )。equals(s . next())){ break;} else { system . out . println(s . next());}}}}这里我们输入“123 345退出”,回车确认。这里我们希望得到如下输出

  123

  345

  但是我们的产量是

  345

  为什么只有“345”输出?我在这里通过debug发现了一个问题:因为我们在判断是否等于“quit”值的时候调用了s.n。

  ext() 已经获取123了,后来打印的是再一次获取的值,也就是获取的下一个值 "345"了,所以最后出现了 只打印 345的问题

  下面给出正确代码,我们只需要保证s.next()值统一就行

  

package gt; import java.util.Scanner; /** * Created by Cronous on 2017/10/29. */public class day01 {     public static void main(String[] args){        System.out.print("请输入值:");        Scanner s = new Scanner(System.in);        while(s.hasNext()){           String a = s.next();//将s.next()赋值给变量a           if("quit".equals(a)){               break;           }else{               System.out.println(a);           }        }    }}

这样即可解决,问题不大,但是需要注意一下。

 

  

 

  

Scanner的输入及理解

 

  

Scanner

new 新生的意思System.out输出System.in 输入Scannery对象

 

  基本语法:

  

Scanner s = new Scanner(System.in);

通过Scanner类的next(下一个)与nextline(下一行)方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextline()判断是否还有输入的数据。

 

  

package Scnner;import java.util.Scanner;public class Day01 {public static void main(String[] args) {//创建一个扫描对象,用于接收键盘数据Scanner scanner = new Scanner(System.in);//接收用户的输入,并把它封装scannerSystem.out.println("使用next方式接收:");//判断用户有没有输出字符串if (scanner.hasNext()==true){ //这里默认==true,不用谢也可以,但是还是建议写String str = scanner.next();//使用next方式接收System.out.println("输出的内容为:"+str);}}}

next()一定要读取到有效字符后才可以结束输入。

 

  对输入有效字符之前遇到的空白,next()方法会自动将其去掉。

  只有输入有效字符后才将其后面输入的空白作为分隔符或者借宿符。

  next()不能得到带有空格的字符串

  nextLine()以enter为结束符,也就是说nextLine()方法返回的输入回车之前的所有字符。

  可以获得空白

  

package Scnner;import java.util.Scanner;public class Day02 {public static void main(String[] args) {//从键盘来接收数据Scanner scanner = new Scanner(System.in);System.out.println("使用nextLine方式接收:");//判断是否还有输入if (scanner.hasNextLine()){//等待用户去输入String str = scanner.nextLine();System.out.println("输出的内容:"+str);}scanner.close();}}

当然也可以不要if去判断

 

  

if (scanner.hasNextLine())
package Scnner;import java.util.Scanner;public class Day03 {    public static void main(String[] args) {    Scanner scanner = new Scanner(System.in);            System.out.println("请输入数据:");        String str = scanner.nextLine();        System.out.println("输出的内容:"+str);               scanner.close();          }

这样也是可以的

 

  

 

  

Scanner输入内容理解(重点)

我个人是这样理解的

 

  输入输出我们只要记住3行代码就行

  

System.out.println("请输入数据:");        String str = scanner.nextLine();        System.out.println("输出的内容:"+str);

第一行代码是标题

 

  请输入数据:

  第二行代码: 是我们键盘所输出的所有内容,知道你按下回车键(enter)之后,把所有内容变成一个变量保存再str里面

  第三行代码:则是等待第二行代码运行完成后,将输出内容+str(你键盘敲下的所有字符,也就是内容) 一起显示出来

  如下图

  

 

  第一行为第一行代码

  第二行hello world 为第二行代码,也就是你键盘敲下的内容

  第三行则是等待第二行代码运行完成后,输出的内衣+键盘敲下的所有字符一起显示出来

  

 

  

注意

//凡是IO流的类如果不关闭会一直占用资源,要养成好习惯用完就关掉        scanner.close();        //IO流 输入输出流

以上为个人经验,希望能给大家一个参考,也希望大家多多支持盛行IT。

 

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: