首页 > 其他 > 详细

用户交互Scanner

时间:2021-03-05 22:07:40      阅读:27      评论:0      收藏:0      [点我收藏+]

用户交互Scanner

基本语法

技术分享图片

必须要有的三个语句

  • 在类前要有引用Scanner类语句 import java.util.Scanner;
  • 创造一个扫描器对象,用于接受键盘数据 Scanner scanner = new Scanner(System.in);
  • 在程序运行最后要有关闭语句 scanner.close();

next()方式

  • 案例
package com.bk201.scanner;

import java.util.Scanner;   //表示引用Scanner类,获取用户的输入

public class Demo01 {
    public static void main(String[] args) {

        //创造一个扫描器对象,用于接受键盘数据
        Scanner scanner = new Scanner(System.in);//new Scanner(System.in)

        System.out.println("使用next方式接受:");

        //判断用户有没有输入字符串
        if(scanner.hasNext()){
            //使用next方式接受
            String str = scanner.next();//等待用户输入
            System.out.println("输入的内容为:"+str);
        }

        //凡是属于IO流的类如果不关闭会一直占用资源,一定要在用完后关闭
        scanner.close();

    }
}

输出结果,等待用户输入字符,再进行下一步

技术分享图片

输入Hello World(中间有空格),回车输出,可以发现只输出了一个Hello,这是因为next方法无法输出带有空格的字符串。这时就需要换成nextline方法。

技术分享图片

nextLine方式

  • 案例
package com.bk201.scanner;

import java.util.Scanner;

public class Demo02 {
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        System.out.println("使用nextLine方式接受:");

        if (scanner.hasNextLine()){

            String str = scanner.nextLine();
            System.out.println("输入的内容为:"+str);

        }

        scanner.close();

    }
}

输出结果,等待用户输入字符,再进行下一步

技术分享图片

输入Hello World(中间有空格),回车输出,可以发现输出了完整的Hello World

技术分享图片

  • 注意点

技术分享图片

去除判断语句if....else

package com.bk201.scanner;

import java.util.Scanner;

public class Demo03 {
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        System.out.println("使用nextLine方式接受:");

        String str = scanner.nextLine();
        System.out.println("输入的内容为:"+str);

        scanner.close();

    }
}

依旧可以运行

进阶练习

  • 根据输入的数字,判断是整数还是小数
package com.bk201.scanner;

import java.util.Scanner;

public class Demo04 {
    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();
    }
}

小数和整数基本一致,只是把 i 变成 f ,把Int变成Float。

输入正确数字时,输出结果为:

技术分享图片

输入错误数字时,输出结果为:

技术分享图片

  • 输入多个数字,求其和于平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出结果
package com.bk201.scanner;

import java.util.Scanner;

public class Demo05 {
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        //我们可以输入多个数字,求其和于平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出结果

        //总和
        double sum = 0.0;
        //计算输入多少个字
        int d = 0;

        //通过循环判断是否还有输入,并在里面对每一次进行求和于统计
        while(scanner.hasNextDouble()){
            double v = scanner.nextDouble();
            d=d+1;
            sum=sum+v;
            System.out.println("你输入的数字是:"+v+"总和为:"+sum);

        }//这个括号的位置很关键,一定不要包含输出语句

        System.out.println("总和:"+sum);
        System.out.println("平均数:"+sum/d);

     scanner.close();
    }
}

输出结果

技术分享图片

如果输出语句在While的语句括号内,那么输出结果会是以下结果,每输入一个数就会输出一次总和于平均数。

技术分享图片

用户交互Scanner

原文:https://www.cnblogs.com/zsbk201/p/14488114.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!