美文网首页
关于Scanner规范输入,以及对输入String的处理

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

作者: 小烈yhl | 来源:发表于2019-01-04 12:59 被阅读0次
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,不能用==,==是用来比较字符串的地址是否相同的,而不是字符内的数据是否相同

相关文章

网友评论

      本文标题:关于Scanner规范输入,以及对输入String的处理

      本文链接:https://www.haomeiwen.com/subject/tddcrqtx.html