java第4课-用户交互Scanner

1. 声明Scanner类的对象scanner所需要的语句

  • 使用Scanner类之前需要import java.util.Scanner;
    import java.util.Scanner;
    
  • new一个Scanner类的对象,名字可为scanner
    Scanner scanner = new Scanner(System.in);//注意大小写,Scanner是类名,scanner是对象名
    
  • 关闭scanner
    scanner.close();//因为没有scanner.open()。所以scanner.close()要放在main方法的末尾
    

2. Scanner类的使用公式

import java.util.Scanner;

public class Test {
    
    public static void main(String[] args) {
        
        Scanner scanner = new Scanner(System.in);
        
        //代码主体
        //代码主体
        //代码主体
        
        scanner.close();
    }
}

3. Scanner类的对象的方法的调用

  • scanner.nextXxx()的调用

    byte b = scanner.nextByte();
    int i = scanner.nextInt();
    long l = scanner.nextLong();
    float f = scanner.nextFloat();
    double d = scanner.nextDouble();
    boolean tag = scanner.nextboolean();
    

    当收到字符串时程序会报错

    Process finished with exit code 1

  • scanner.hasNextXxx()的调用

    boolean tag1 = scanner.hasNextByte();//输入-128~127返回1,否则返回0
    boolean tag2 = scanner.hasNextInt();//输入值如果是int类型,则返回1,否则返回0
    boolean tag3 = scanner.hasNextLong();
    boolean rag4 = scanner.hasNextFloat();
    boolean tag5 = scanner.hasNextDouble();
    boolean tag6 = scanner.hasNextboolean();
    boolean tag6 = scanner.hasNextLine();
    

    当收到的值不是目的数据类型时,方法会返回0,但程序不会报错

    hasNextLine()方法是读取控制台有没有输入的,如果有输入,不管输入的是什么,都会返回true

4. Scanner类的对象的方法与while的配合使用

import java.util.Scanner;

public class Test {
    
    public static void main(String[] args) {
        
        Scanner scanner = new Scanner(System.in);
        
        while (scanner.hasNextLine()) {//ctrl+d可终止程序
            
            String s = scanner.nextLine();
            System.out.println(s);
            
            }
        
        scanner.close();//注意不要把这一句代码放到上面的while循环中,否则会报错!
    }
}

输入:

abcd

ctrl+d

输出结果:

abcd

5. scanner.next()和scanner.nextLine()的区别

String string1 = scanner.next();//空格之前的字符串传给score1
System.out.println(string1);//最好不要用scanner.next()

输入:

abcd abcd

输出结果:

abcd

String string2 = scanner.nextLine();//空格包括空格之后,第一个回车之前的字符串传给score2
System.out.println(string2);

输入:

abcd abcd

输出结果:

abcd abcd

6. Scanner中nextInt()和nextLine()详解

  • 观察一下两个程序的区别

    • 程序1

      import java.util.Scanner;
      
      public class Test {
      
          public static void main(String[] args) {
      
              Scanner scanner = new Scanner(System.in);
              
              String str = scanner.nextLine();
              int i = scanner.nextInt();
              System.out.println(str);
              System.out.println(i);
      
              scanner.close();
          }
      }
      

      输入:

      abc回车

      123回车

      输出结果:

      abc

      123

    • 程序2

      import java.util.Scanner;
      
      public class Test {
      
          public static void main(String[] args) {
      
              Scanner scanner = new Scanner(System.in);
              
              int i = scanner.nextInt();
              String str = scanner.nextLine();
              System.out.println(str);
              System.out.println(i);
              
              scanner.close();
          }
      }
      

      输入:

      123回车

      输出结果:

      123

      程序2在第一次按下回车后便结束了!

  • 结果分析:

scanner.nextLine()以回车作为输入结束标志,读取方式是读取包括回车在内前面的所有队列中的字符,向控制台返回时候,会自动舍弃回车符,将输入的各个字符组成字符串输出,同时队列将会清空包括回车符

scan.nextInt()也是以回车符作为结束标志,读取方式是只读取回车符前面输入的所有内容,所以返回的时候它会将回车符前面的内容返回并且清空回车符前的所列内容,将回车符留在队列中

参考资料:

Scanner中nextInt()和nextLine()详解(秒懂)

posted @ 2021-11-29 10:03  以学愈愚  阅读(38)  评论(0)    收藏  举报