首页 > 其他分享 >Day11-Scanner

Day11-Scanner

时间:2024-10-07 18:11:51浏览次数:9  
标签:scanner System Day11 println out 输入 Scanner

Day11-Scanner

Scanner介绍

Scanner 对象:

之前我们学的基本语法中我们并没有实现程序和人的交互,但是 Java 给我们提供了这样一个工具类,我们可以获取用户的输入。

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

基本语法:

Scanner s = new Scanner(System.in);

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

java.util.Scanner 的解读:

“java.util.Scanner” 是 Java 编程语言中的一个类。

“java.util” 是 Java 标准库中的一个包(package)名称,这个包中包含了很多实用的工具(utility)类和接口。

“Scanner” 是其中的一个类,它主要用于从标准输入(通常是键盘输入)、文件等来源中读取数据。它提供了方便的方法来解析各种基本数据类型和字符串。

next()与 nextLine()方法分别的用法

一、next()方法

  • next()方法会从输入流中读取下一个单词(以空白字符分隔)。

  • 它会在遇到空白字符(如空格、制表符、换行符等)时停止读取,并返回当前读取到的内容。

  • 假设用户输入 “hello world”,next()方法只会读取到 “hello”,因为它在遇到第一个空白字符时就停止了读取。

    //创建一个扫描器对象,用于接收键盘数据
            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();//关闭
    

    输入Hello world时,只输出一个Hello

    使用next方法接收:
    Hello world
    输入的内容为:Hello
    

二、nextLine()方法

  • nextLine()方法会读取输入流中的一整行内容,包括空白字符。
  • 它会读取到当前行的末尾(换行符处),并返回包括换行符之前的所有字符。
 Scanner scanner = new Scanner(System.in);
        System.out.println("使用nextline方法接收:");

        if(scanner.hasNextLine()){
            String str = scanner.nextLine();
            System.out.println("输出的结果为:"+str);
        }
     scanner.close();

hasNext()

在 Java 中,Scanner类的hasNext()方法用于判断输入流中是否还有下一个输入项(token)。

具体解释如下:

一、返回值及用途

  1. 返回值类型:这个方法返回一个布尔值。如果输入流中还有下一个输入项可读取,它就返回true;如果没有更多的输入项可读取,它就返回false
  2. 常见用途:通常在一个循环中使用这个方法来不断检查是否有更多的输入,以便决定是否继续读取输入。

二、输入项的概念

  1. 定义:输入项是指通过输入流提供的、以分隔符(如空格、换行符等)分隔的一块数据。具体的分隔规则取决于Scanner的构造方式和默认的分隔模式。
  2. 示例:如果用户在控制台输入 “hello world”,这里面的 “hello” 和 “world” 可以分别被看作两个输入项。如果输入的是一个整数,那么这个整数就是一个输入项。

三、与其他方法配合使用

  1. next()方法配合:通常在使用next()方法读取输入项之前,先使用hasNext()方法进行判断,以确保不会在没有输入项可读取时调用next()方法而导致异常。

遇见某一个类,选中,按住Ctrl键,单击鼠标,就进入了类的源代码

实际应用:判断输入的是不是整数/小数

Scanner scanner = new Scanner(System.in);

        //从键盘接收数据
        int i1=0;
        float i2=0.0f;
        System.out.println("请输入整数:");
        if(scanner.hasNextInt()){
           i1 = scanner.nextInt();
            System.out.println("输入的整数是:"+i1);
        }else {System.out.println("你输入的不是整数");}


        System.out.println("请输入小数:");
        if(scanner.hasNextFloat()){
            i2 = scanner.nextFloat();
            System.out.println("输入的小数是:"+i2);
        }else {System.out.println("你输入的不是小数");}



        scanner.close();

实际应用:将输入的数据求和、求平均值

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

        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入:");
        //和
        double sum=0;
        //有多少个数
        int num=0;

        //通过循环判断是否有数字,并进行求和和数量统计
        while(scanner.hasNextDouble()){
             sum+=scanner.nextDouble();
            num=num+1;//num++
            System.out.println("你输入了第"+num+"个数,当前的和是"+sum);


        }
        System.out.println(num+"个数的和是"+sum);
        System.out.println(num+"个数的平均数:"+(sum/num));
        scanner.close();

标签:scanner,System,Day11,println,out,输入,Scanner
From: https://www.cnblogs.com/xiaokunzhong/p/18450387

相关文章

  • 流程控制-scanner
    next();&nextLine();空格为结束&回车为结束packagecom.div.Scanner;importjava.util.Scanner;publicclassDemo01{publicstaticvoidmain(String[]args){//创建一个扫描器对象,用于接收键盘数据Scannerscanner=newScanner(Sy......
  • day11[Lagent 自定义你的 Agent 智能体]
    环境配置开发机选择30%A100,镜像选择为Cuda12.2-conda。首先来为Lagent配置一个可用的环境。LagentWebDemo使用使用Lagent的WebDemo来体验InternLM2.5-7B-Chat的智能体能力先使用LMDeploy部署InternLM2.5-7B-Chat,并启动一个APIServer然后,我们在另一个......
  • 常用类--Scanner,object
    Scanner`Scanner:一个简单的文本扫描器,可以使用正则表达式解析原始类型和字符串构造方法:Scanner(InputStreamsource)构造一个新的Scanner,产生从指定输入流扫描的值。`获取一个数字:(无法输出空格,只能输出空格前的数字)inti=sc.nextInt();......
  • java_day3_Scanner,顺序结构,选择结构(if,switch),循环结构(for,while),
    一、Scanner键盘录入:程序运行过程中,用户可以根据自己的需求输入参与运算的值实现键盘录入的步骤1、导包2、创建键盘录入对象3、调用方法实现键盘录入1)输入整数2)输入字符串publicclassScannerDemo1{publicstaticvoidmain(String[......
  • 初学Java.Scanner
    publicclassDemo04{publicstaticvoidmain(String[]args){//我们要输入多个数字并且要求出总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并且执行输出结果Scannersc=newScanner(System.in);//和doublesum=0;//计算输入多少......
  • Day11.面向对象编程OOP(3)
    多态动态编译:类型:可扩展性即同一种方法可以根据发送对象的不同而采用多种不同的行为方式一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多多态注意事项:多态是方法的多态,属性没有多态父类和子类有联系类型转换异常:ClassCastException存在条件:继承......
  • day11-多线程
    一、线程安全问题线程安全问题出现的原因?存在多个线程在同时执行同时访问一个共享资源存在修改该共享资源线程安全:多个线程同时修改同一个资源取钱案例小明和小红是一对夫妻,他们有一个共同的账户,余额是10万元如果小明和小红同时来取钱,并且2人各自......
  • 【每日刷题】Day119
    【每日刷题】Day119......
  • C++复习day11
    类型转化C语言中的类型转换在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或者返回值类型与接收返回值类型不一致时,就需要发生类型转化,C语言中总共有两种形式的类型转换:隐式类型转换和显式类型转换。隐式类型转化:编译器在编译阶段自动进行,能转就转,......
  • 通过scanner与用户交互
    用户交互scanner代码,使用Linepackagecom.scanner;importjava.util.Scanner;publicclassDemo01{publicstaticvoidmain(String[]args){//创建一个扫描器对象,用于接收键盘数据Scannerscanner=newScanner(System.in);System.out.......