第十五讲——用户交互Scanner

第十五讲 用户交互Scanner

写在前面;

之前的java程序是死的,没有做到人机交互

接下来讲的Scanner类(死尬男~|扫描器)可以获取用户输入


通过Scanner类来获取用户的输入(用IF)

  • 语法;
Scanner scanner = new Scanner(System.in);
if(scanner.hasNext()==true){
 
 String str = scanner.next();
 
 System.out.println(str);
 
}
 scanner.close();

IF函数格式

IF(IF){true 执行
 
}else{false  执行

}

通过Scanner类来获取用户的输入(不用IF)

Scanner sanner = new Sacnner(Sytem.in);
String str = sanner.nextLine();
System.ouy.println(str);
sacnner.close();


System.out 输出

System.in 输入

IO in输入 out输出


步骤

首字母小写 遵守驼峰原则;next


test 01

下面用的是

确认Users输入结束 hasNext()

获取Users输入数据 Next()

package scanner;

import java.util.Scanner;
//在输入Scanner中new后按alt+Enter  会自动导入Scanner类

public class Demo01 {
    public static void main(String[]args){
        Scanner scanner = new Scanner(System.in);
        //创建的扫描器,用于接受键盘数据

        System.out.println("使用next方式获取;");
        // 1.用IF判断用户有无输入 2.用hasNext来确认输入结束,这里会等待Users输入
        //用hasNext会以空格符为节点后面舍弃
        if(scanner.hasNext()==true){

            //3.使用next()获取Users输入的数据 4.将得到的数据赋值到str
            String str =scanner.next();
            
            System.out.println("Users输入的字符为;"+"\n"+str);
            
            //凡是IO流的类如果不关闭,会一直占用资源,一定要关闭
        }
         scanner.close();
    }
}

这里用到了IF函数 目的在于更方便理解Scanner类的作用 so不多介绍IF 根据算法来了解就行 后面会加以应用并且以下不使用IF函数

显示为;

XXZ\out\production\DEMO-XXZ scanner.Demo01
使用next方式接受;
天行健 君子以自强不息 地势坤  君子以厚德载物
Users输入的字符为;
天行健

Process finished with exit code 0
  • 发现我空格后面的全给他吃了

接下来test是什么原因

  • 提出假设和输入确认结束的hasnext()有关系

test02

Test02使用;

确认Users输入结束; hasNextLine()

获取Users输入数据; nextLine()


package scanner;

import java.util.Scanner;

public class Test02 {
    public static void main(String[]args){
        Scanner scanner = new Scanner(System.in);

        if(scanner.hasNextLine()==true){

            String str = scanner.nextLine();

            System.out.println(str);
            
        }
        scanner.close();
    }
}

显示

Desktop\DEMO-XXZ\out\production\DEMO-XXZ scanner.Test02
Hello world!!!
Hello world!!!

Process finished with exit code 0


sum up (重点)

  • 有两种确认Users输入数据 and 获取Users输入数据的方法
  1. hasNext——>Next //忽略空格后 所有内容
  2. hasNextLine——>nextLine //显示Enter前 所有内容

不用IF

不用If函数进行获取Users输入


  1. 使用next
package scanner;

import java.util.Scanner;

public class Demo02 {
    
    public static void main(String[]args){
        
        Scanner scanner = new Scanner(System.in);
        
        String     str  = scanner.next();
        
        System.out.println(str);
        
        scanner.close();
    }
}

显示

Desktop\DEMO-XXZ\out\production\DEMO-XXZ scanner.Demo02
Hello Wolrd!!!
Hello

Process finished with exit code 0

  1. 使用nextLine
package scanner;

import java.util.Scanner;

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

        Scanner scanner = new Scanner(System.in);

        String     str  = scanner.nextLine();

        System.out.println(str);

        scanner.close();
        }
        }

显示

Desktop\DEMO-XXZ\out\production\DEMO-XXZ scanner.Demo02
Hello World!!!
Hello World!!!

Process finished with exit code 0


Scanner的进阶用法

Scanner判定

用Sacanner来判定和获取需要的类型数据

格式(打比方需要int类型数据)

Scanner scanner = new Scanner(System.in);//建立扫描器——易错!!!
//判定是否int数据
if(scanner.hasNextInt()==true){

int  num01 = scanner.nextInt();

System.out.println("输入的是整数;"+num01);
} else {
System.out.println("输入的不是整数!");

scanner.close();

package scanner;

import java.util.Scanner;

//进阶;用来判定输入的类型是否符合需要的类型
//hasNextLine+类型如——hasNextLineInt
public class Demo03 {
    public static void main(String[] args) {
        //=====第一步-应用Scanner类=====
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入整数;");

        if (scanner.hasNextInt() == true) {//true 执行以下
            //==true可以省略不写  但是我还在练习 所以我写 软件会报警正常

            int str = scanner.nextInt();

            System.out.println("Users输入的整数是;" + str);

        } else {                             //false 执行以下

            System.out.println("我tm直接报警!!");

        }

        System.out.println("这回输入小数;");//=====Float======

        if (scanner.hasNextFloat() == true) {

        float str02 = scanner.nextFloat();

        System.out.println("这逼输入的小数为;"+str02);
        } else {
         System.out.println("这傻逼输入的不是小数!!");

        }

            scanner.close();
    }
}

显示为

Desktop\DEMO-XXZ\out\production\DEMO-XXZ scanner.Demo03
请输入整数;
10.1
我tm直接报警!!
这回输入小数;
这逼输入的小数为;10.1

Process finished with exit code 0


while应用


利用while来完成;

  • 多次输入数据
  • 统计输入次数
  • 统计total
  • 统计平均值
  • 通过非数字结束输入并反馈数据

package scanner;

import java.util.Scanner;

public class While {
    public static void main(String[]ages){
        //建立扫描器
        Scanner scanner = new Scanner(System.in);
        //设定输入次数初始值为整数;0
        int i = 0;
        //设定输入数据初始总和为;0
        double sum = 0;

        System.out.println("请开始输入数据;");

        while (scanner.hasNextDouble()==true){

            double d = scanner.nextDouble();

            i++;

            sum = sum+d;

            System.out.println("你输入了第"+i+"个数据"+"目前合计为"+sum);

        }
        System.out.println("总计"+"输入 "+i+" 次;"+"\n"+"total "+sum+";"+"\n"+"平均值 "+sum/i);


        scanner.close();

    }
}

显示

Desktop\DEMO-XXZ\out\production\DEMO-XXZ scanner.While
请开始输入数据;
12
你输入了第1个数据目前合计为12.0
23
你输入了第2个数据目前合计为35.0
24
你输入了第3个数据目前合计为59.0
10
你输入了第4个数据目前合计为69.0
小熊
总计输入 4 次;
total 69.0;
平均值 17.25

Process finished with exit code 0



小计

  1. 学会用Scanner类完成用户交互
  2. 使用If函数进行判断数据类型
  3. 掌握nextline-hasNextLine(适用字符)与next-hasnext(适用数字)的特点
  4. 掌握while循环函数的应用

  1. 结尾加
scanner.close();//关闭

3新增单词

1 Scanner 扫描器类 死尬男~
2 else 否则 埃尔斯~
3 hasNext 是否有下一个 哈斯内斯特~
4 hasNextLine 是否有下一个/排成一行 哈斯内斯特莱恩~
5 next 下一个 内斯特~
6 nextLine 下一个/排成一行 内斯特莱恩~
7 close 关闭 克洛斯~ scanner.close();
8 Test 测试 塔斯特~
9 while 循环 歪L~ while (scanner.hasNextDouble()==true){}//和if一样
posted @ 2020-11-09 17:28  项晓忠  阅读(106)  评论(0)    收藏  举报