美文网首页
Scanner用法

Scanner用法

作者: Ferrari1001 | 来源:发表于2018-04-06 21:50 被阅读17次

    一、常用方法next()、nextInt()和nextLine()的使用总结

    例一
    import java.util.Scanner;
    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入一个整数");
            while(sc.hasNextInt()){
                int num = sc.nextInt();
                System.out.println("请输入一个字符串");
                String str = sc.nextLine();
                System.out.println("num="+num+",str="+str);
                System.out.println("请输入一个整数");
            }
     }
    
    输出结果:
    image.png

      
      nextInt()方法会读取下一个int型标志的token.但是焦点不会移动到下一行,仍然处在这一行上。当使用nextLine()方法时会读取改行剩余的所有的内容,包括换行符,然后把焦点移动到下一行的开头。所以这样就无法接收到下一行输入的String类型的变量。

    例二

    将nextInt()方法换成next()

    import java.util.Scanner;
    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入第一个字符串");
            while(sc.hasNext()){
                String str1 = sc.next();
                System.out.println("请输入第二个字符串");
                String str = sc.nextLine();
                System.out.println("str1="+str1+",str="+str);
                System.out.println("请输入第一个字符串");
            }
    }
    
    输出结果:
    image.png

    从结果可以看出,next()以忽略空格,Tab,Enter键开始,以空格,Tab,Enter键作为结束符结束。
    next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键,换行符或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。简单地说,next()查找并返回来自此扫描器的下一个完整标记。完整标记的前后是与分隔模式匹配的输入信息,所以next方法不能得到带空格的字符串。
    而nextLine()方法的结束符只是Enter键,即nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的。

    例三

    当程序中next()或nextInt() 方法后面需要使用nextLine()方法时,可以在next()或nextInt()方法使用Enter键之后,填充一个无用的nextLine(),这样我们就可以从键盘输入我们需要键入的字符串了,而不会获取到上一次输入中分隔符后面的字符内容了。

    import java.util.Scanner;
    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入第一个字符串");
            while(sc.hasNext()){
                String str1 = sc.next();
                System.out.println("请输入第二个字符串");
                sc.nextLine();
                String str = sc.nextLine();
                System.out.println("str1="+str1+",str="+str);
                System.out.println("请输入第一个字符串");
            }
    }
    
    输出结果:
    image.png

    相关文章

      网友评论

          本文标题:Scanner用法

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