zoukankan      html  css  js  c++  java
  • Java(10):用户交互Scanner

    Scanner

    Java.util.Scanner是Java5的新特征,我们可以通过Scanner类来获取用户的输入。

    基本语法:

    Scanner s = new Scanner(System.in);
    

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

    import java.util.Scanner;
    
    public class HelloWorld {
        public static void main(String[] args) {
    
            // 创建一个扫描器对象,用于接收键盘数据
            Scanner scanner = new Scanner(System.in);
    
            System.out.println("使用next方式接收:");
    
            // 判断用户是否有输入字符串
            if (scanner.hasNext()){
                // 使用next方式接收
                String str = scanner.next();
                System.out.println("输入的内容为:" + str);
            }
    
            // 凡是属于IO流的类如果不关闭会一直占用资源,要养成良好的习惯用完就关掉
            scanner.close();
        }
    
    }
    

    next()和nextLine()的区别:

    • next():

      1. 一定要读取到有效字符后才可以结束输入。
      2. 对输入有效字符之前遇到的空白,next()方法会自动将其去掉。
      3. 只有输入有效字符后才将其后输入的空白作为分割符或者结束符。
      4. 综上所述,即next()方法不能得到带有空格的字符串。
    • nextLine():

      1. 以Enter作为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。
      2. 可以获得空白。

    其他has与next方法

    // 创建一个扫描器对象,用于接收键盘数据
    Scanner scanner = new Scanner(System.in);
    double sum = 0.0;
    int num = 0;
    
    System.out.println("请输入数字:");
    
    while (scanner.hasNextDouble()){
        double x = scanner.nextDouble();
        sum = x + sum;
        num ++;
    }
    
    System.out.println("所有数字的和为:" + sum);
    System.out.println("共有" + num + "个数字");
    
    // 凡是属于IO流的类如果不关闭会一直占用资源,要养成良好的习惯用完就关掉
    scanner.close();
    

    注意

    scanner有点像单例模式,如果实例化多个scanner对象,将其中的一个close();则其他的scanner也会close();

    Scanner scanner_1 = new Scanner(System.in);
    Scanner scanner_2 = new Scanner(System.in);
    
    while (scanner_1.hasNext()){
        String content = scanner_1.next();
        if (content.equals("q")){
            break;
        }
        System.out.println(content);
    }
    //        scanner_1.close();如果这里关闭,不会运行scanner_2
    System.out.println("===============");
    while (scanner_2.hasNext()){
        String content = scanner_2.next();
        if (content.equals("q")){
            break;
        }
        System.out.println(content);
    }
    scanner_2.close();
    
  • 相关阅读:
    MySQL实现嵌套集合模型
    Go项目结构和模块导入
    sqlalchemy(二)高级用法
    sqlalchemy(一)基本操作
    K-均值聚类算法
    回归
    logistic回归
    Android隐藏状态栏、导航栏
    Android监听返回键、Home键+再按一次返回键退出应用
    PDFMate PDF Converter Pro
  • 原文地址:https://www.cnblogs.com/zhangtu/p/14458838.html
Copyright © 2011-2022 走看看