关于Scanner规范输入,以及对输入String的处理

Scanner中的方法

next() 方法返回字符串
读取非空的字符串,从第一个非空字符(空格、回车、null都不读取)开始读取,到下一个(空格、回车、null)处停止。

        Scanner in = new Scanner(System.in);
        String s = in.next();
        String t = in.next();
        
        System.out.println(s);
        System.out.println(t);
输入 :_123_test1_  //‘_’代表空格
输出 :
123
test1
输入 :
     1234



test1

输出 :
1234
test1

nextLine()方法
读从光标处之后的本行数据(读取所有字符,包含空格),然后将光标移到下一行

        Scanner in = new Scanner(System.in);
        String s1 = in.next();
        String s2 = in.next();
        String s3 = in.nextLine();
        String s4 = in.nextLine();
        String s5 = in.next();
        
        System.out.println(s1);
        System.out.println(s2);
        System.out.println(s3);
        System.out.println(s4);
        System.out.println(s5);
输入 :
s1 s2 s3
 s4
s5

输出 :
s1
s2
 s3
 s4  
s5

解释一下:

  1. 前面两个in.next()s1s2读取走了
  2. 然后光标到_s3
  3. 下一个in.next()_s3读取走并将其光标推至下一行
  4. 然后光标到了第二行,在_s4
  5. 读取in.next()读取本行数据 _s4,然后将光标推至下一行
  6. 光标到第三行,in.next()读取本行的非空数据s5

nextInt()返回的是一个int数值
从第一个非空的数字读取,如果遇上了字符串,则会报错

        Scanner in = new Scanner(System.in);

        int a1 = in.nextInt();
        int a2 = in.nextInt();
        int a3 = in.nextInt();
        
        
        System.out.println(a1);
        System.out.println(a2);
        System.out.println(a3);
输入 :
123 34
1

输出 :
123
34
1

如果输入字符abcd则会报错,1234er也会报错,此方法只读数字。

在控制台输入最好不要用while(hasNextLine())因为控制台输入的话,系统不知道你会何时结束输入,所以这个循环就会一直在,从而导致你无法跳出循环;这个方法主要用于对文件的读取

String处理的方法

trim()方法,用来去除首尾的空格,中间的空格去不不掉!

        String s = "   abc nd  ";
        s = s.trim();
        System.out.println(s);

输出abc nd

split()方法,用来切分字符串

  1. public String[] split(String regex, int limit)
    此方法限定了切割后的长度

例如,字符串

"boo:and:foo"

使用以下参数产生以下结果:

Regex       Limit          Result 
 :            2     { "boo", "and:foo" } 
 :            5     { "boo", "and", "foo" } 
 :           -2     { "boo", "and", "foo" } 
o             5     { "b", "", ":and:f", "", "" } 
o            -2     { "b", "", ":and:f", "", "" } 
o             0     { "b", "", ":and:f" } 

limit参数控制应用模式的次数,因此影响生成的数组的长度。 如果极限n大于0,则模式最多应用n -1次,数组的长度不大于n ,数组的最后一个条目将包含超出最后一个匹配分隔符的所有输入。 如果n是非正的,那么模式将被应用到尽可能多的次数,并且数组可以有任何长度。 如果n为0,则模式将被应用尽可能多次,数组可以有任何长度,并且尾随的空字符串将被丢弃。

  1. public String[] split(String regex)
"boo:and:foo"
Regex         Result 
:           { "boo", "and", "foo" } 
o           { "b", "", ":and:f" } 
可以用replace方法去除空格

replace(char oldChar, char newChar)替换String内字符
replaceAll(String regex, String replacement)替换String内的某个String,我推荐用这个!

下面是具体如何去除所有空格

        String s = "   abc nd  ";
        s=s.replace(" ","");
        System.out.print(s);
输出
abcnd

替换为星星*

        String s = "   abc nd  ";
        s=s.replace(" ","*");
        System.out.print(s);
输出
***abc*nd**

最后强调一点,String的比较只能用equal,不能用==,==是用来比较字符串的地址是否相同的,而不是字符内的数据是否相同

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 最先接触编程的知识是在大学里面,大学里面学了一些基础的知识,c语言,java语言,单片机的汇编语言等;大学毕...
    oceanfive阅读 3,167评论 0 7
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,848评论 0 10
  • 转眼间,一个炎夏过去了。蓦然回首,不能不感慨光阴似箭的那份无奈。作为一名即将要迈入社会的青年,提前深入社会去实践锻...
    智陌阅读 218评论 0 0
  • 今日是三八妇女节,在全社会都在讲女权主义的时候,我主动地向我老板提出了加薪要求。 作为一名职场女性,我觉得我应该勇...
    小三爪阅读 152评论 0 0
  • 人生!就是酸甜苦辣咸再加一把孜然!生活!就是柴米油盐酱醋茶和添上一把火!不管多累,也要好好的照顾自己!因为没有人疼...
    ing5678阅读 353评论 0 0