02 Scanner进阶使用

01 用户交互Scanner

Scanner

  • 要导入包 :import java.util.Scanner;
  • 从键盘上读取数据
  • //开始时的固定套路:Scanner sc1 = new Scanner(System.in);
    // 中间的关键步骤:String str1=sc1.next(); 或者String str2=sc2.nextLine(); 后者更好用
    // 将 键盘上输入的字符串 存放在 变量 str 中
    //结束时的固定套路:sc1.close(); 凡是属于IO流的类如果不关掉就会一直占用资源,要养成良好习惯用完就关掉

基本语法等

  • 创建一个扫描器对象,用于接收键盘数据,但是这里此时并没有真正用调用到键盘

  • Scanner sc1 = new Scanner(System.in);

    // 类 对象 创建 (系统输入)

  • 方法:真正地调用键盘的情况是在调用各种相关方法时会使用到,最后返回数值

    • next() 、nextLine() :从键盘上获取输入的字符串
    • hasNext()、 hasNextLine() : 判断是否有符合需要的字符串 ,一般与 if () 语句一起使用
    • nextInt() 、nextFloat()、nextDouble() ··· :从键盘上获取输入的数据,分别对应 int ,float, double···
    • hasNextInt()、 hasNextFloat() 、hasNextDouble(): 判断是否有符合需要的数据,一般与 if () 语句一起使用

next() 、nextLine()的区别

读取字符串的话最好使用 nextLine() 吧

image

代码

Test01_Scanner

package com.zhan.base_2;

import java.util.Scanner;  //导入包

//开始时的固定套路:Scanner sc1 = new Scanner(System.in);
// 中间的关键步骤:String str1=sc1.next(); 或者String str2=sc2.nextLine();  后者更好用
   // 将 键盘上输入的字符串 存放在 变量 str 中
//结束时的固定套路:sc1.close();
public class Test01_Scanner {
    public static void main(String[] args) {


        /*创建一个扫描器对象,用于接收键盘数据,但是这里此时并没有真正用调用到键盘
             真正地调用键盘的情况是在调用各种相关方法时会使用到
             比如 sc1.hasNext(),sc1.next()
             sc2.hasNextLine(),sc2.nextLine()
             hasNextInt(),scanner.nextInt()
             hasNextFloat(),scanner.nextFloat()
         */
          Scanner sc1 = new Scanner(System.in); // 输入new Scanner(System.in);后按 alt+enter 自动补全
//        类      对象  创建      (系统输入)

        System.out.println("使用next方式接收");
        // 使用 hasNext() 判断用户有没有输入字符串 , 可以不用判断,但最好是用
        if(sc1.hasNext()) {              //调用方法,先从键盘上读取数据,然后返回结果(布尔值),if()里面默认为真
            String str1 = sc1.next();    //调用方法,从键盘上读取数据,然后返回数据,再赋值 不如 nextLine 好用
            System.out.println("输入内容为:" + str1);
        }

            //凡是属于IO流的类如果不关掉就会一直占用资源,要养成良好习惯用完就关掉
            sc1.close();      //关掉语句

        }
    }

Test01_Scanner_2

package com.zhan.base_2;

import java.util.Scanner;

public class Test01_Scanner_2 {
    public static void main(String[] args) {
        System.out.println("使用nextLine方式接收");
        Scanner sc2 = new Scanner(System.in);
        if(sc2.hasNextLine()){
            String str2=sc2.nextLine();
            System.out.println("输入的内容为:"+str2);
        }
        sc2.close();
    }
}

Test01_Scanner

package com.zhan.base_2;

import java.util.Scanner;

public class Test02_Scanner {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int i=0;
        float f= 0.0f;
        System.out.println("请输入整数:");
        if (scanner.hasNextInt()){       //调用方法,先从键盘上读取数据,然后返回结果,再判断输入的数是否为整数
            i= scanner.nextInt();        //调用方法,从键盘上读取数据,然后返回数据,再赋值
            System.out.println(i);
        }else System.out.println("输入的不是整数!");
        System.out.println("请输入浮点数:");
        if (scanner.hasNextFloat()){      //调用方法,先从键盘上读取数据,然后返回结果,再判断输入的数是否为浮点数
            f=scanner.nextFloat();        //调用方法,从键盘上读取数据,然后返回数据,再赋值
            System.out.println(f);
        }else System.out.println("输入的不是浮点数!");
        scanner.close();
    }
}

Test02_Scanner_2

package com.zhan.base_2;

import java.util.Scanner;

public class Test02_Scanner_2 {
    // 通过空格或者回车,从键盘上输入多个数值,求和并求平均数
    public static void main(String[] args) {
        int sum=0;
        int n=0;
        Scanner scanner = new Scanner(System.in);   // 输入new Scanner(System.in);后按 alt+enter 自动补全
        System.out.println("请输入double 数据,输入非double数据结束计算");
        while(scanner.hasNextDouble()){
            double x = scanner.nextDouble();    // scanner.nextDouble();后 按 alt+enter 自动补全
            n++;  //  n+=1; n=n+1
            sum+=x;
            System.out.println("当前"+n+"个数总和为:"+sum);
        }
        scanner.close();
        System.out.println(n+"个数的总和为:"+sum);
        System.out.println(n+"个数的平均数为:"+(sum/n));
    }
}
posted @ 2023-01-22 02:18  被占用的小海海  阅读(18)  评论(0编辑  收藏  举报