首页 > 其他分享 >Scanner对象、进阶与判断浅学

Scanner对象、进阶与判断浅学

时间:2024-03-09 16:14:20浏览次数:25  
标签:进阶 scanner 浅学 System println public 输入 Scanner

前言

  • 之前我们学的基本语法中我们并没有实现程序和人的交互,但是 Java 给我们提供了这样一个工具类,我们可以获取用户的输入java.util.ScannerJava5 的新特征我们可以通过 scanner 类来获取用户的输入

    • 基本语法代码

      Scanner str = new Scanner(System.in);
      
  • 通过 Scanner next()nextLine() 方法获取输入的字符串,在读取前我们一般需要使用 hasNext()hasNextLine() 判断是否还有输入的数据

  • if、else与while浅学

    • if:如果

      public class Demo04 {
          public static void main(String[] args) {
              int i = 1;
              //如果条件成立,那么i的值改变为2
              if (i == 1){
                  i = 2; //成立 i的值改变为2
              }
          }
      }
      
    • else:否则

      public class Demo04 {
          public static void main(String[] args) {
              int i = 3;
              //如果条件成立,那么i的值改变为2.否则,i的值改变为4
              if (i == 1){
                  i = 2; //不成立,不执行
              }else{ 
                  i = 4; //成立,i的值改变为4
              }
          }
      }
      
    • while:循环判断

      public class Demo04 {
          public static void main(String[] args) {
              int i = 1;
              //如果条件一直成立,那么i的值不变.否则,跳出循环判断结束判断
              while (i == 1){
                  i = 1; //成立,值不变
              }
              /*
              while (i == 1){
                  i = i + 1; //首次判断成立,值+1后为2,第二次不成立,跳出判断结束判断
              }
              */
          }
      }
      

next() 与 nextLine()

  • next()

    • 代码举例

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

      请输入数据:
      hello world //自由输入
      输出的内容为:hello //丢失空格之后的字符串(world)
      
      进程已结束,退出代码为 0
      
    1. 一定要读取到有效字符后才可以结束输入
    2. 对输入有效字符之前遇到的空格,next() 方法会自动将其去掉
    3. 只有输入有效字符后才将其后面输入的空格作为分割符或者结束符
    4. next() 不能得到带有空格的字符串
  • nextLine()

    • 代码举例

      import java.util.Scanner;
      
      public class Demo02 {
          public static void main(String[] args) {
              //从键盘接收数据
              Scanner scanner = new Scanner(System.in);
      
              System.out.println("请输入数据:");
      
              //判断是否还有输入
              if (scanner.hasNextLine()){
                  String str = scanner.nextLine();
                  System.out.println("输出的内容为:" + str);
              }
      
              //关闭IO流的类占用
              scanner.close();
          }
      }
      
    • 返回结果

      请输入数据:
      hello world //自由输入
      输出的内容为:hello world //全部接收
      
      进程已结束,退出代码为 0
      
    1. 以 回车键 为结束符,也就是说 nextLine() 方法返回的是输入回车之前的所有字符
    2. 可以接收空格

常用写法举例

  • 代码语法

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

    请输入数据:
    123 ABC AJun 阿俊学Java
    输出的内容为:123 ABC AJun 阿俊学Java
    
    进程已结束,退出代码为 0
    

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(); //接收下一个整数,同为整数型所以可以共用i变量
                  System.out.println("整数数据" + i);
              }else{ //否则
                  System.out.println("输入的不是整数数据");
              }
      
              System.out.println("请输入小数");
      
              //如果
              if (scanner.hasNextFloat()){ //判断后面输入是否还有小数
                  f = scanner.nextFloat(); //接收下一个小数,同为小数型所以可以共用f变量
                  System.out.println("小数数据" + f);
              }else{ //否则
                  System.out.println("输入的不是小数数据");
              }
      
      
              scanner.close();
          }
      }
      
    • 输入正确类型返回结果

      请输入整数:
      1	//自由输入int类型
      整数数据1
      请输入小数
      1.1		//自由输入float类型
      小数数据1.1
      
      进程已结束,退出代码为 0
      
    • 输入错误类型返回结果

      请输入整数:
      1.1		//自由输入错误的类型数值
      输入的不是整数数据	//判断不是int类型
      请输入小数
      小数数据1.1		//接收为float类型
      
      进程已结束,退出代码为 0
      
  • 编写简单的求和与平均值

    • 代码举例

      public class Demo05 {
          public static void main(String[] args) {
              //我们可以输入多个数字,并求其总和与平均数,每输入一个数字回车确认,通过输入非数字来结束输入并输出执行结果
      
              Scanner scanner = new Scanner(System.in);
      
              //和
              double sum = 0;
              //计算输入了多少个数字
              int m = 0;
      
              //通过while循环判断是否还有输入,并在里面对每一次进行求和和统计
              while (scanner.hasNextDouble()){
                  double x = scanner.nextDouble(); //接收数值
                  m = m + 1; //m++  用回车计次输入几个数值
                  sum = sum + x; //用sum求所输入数值的和
                  System.out.println("你输入了第" + m + "个数字,然后当前结果sum=" + sum);
              }
      
              System.out.println(m + "个数的和为" + sum);
              System.out.println(m + "个数的平均值是" + (sum / m));
      
              scanner.close();
          }
      }
      
    • 返回结果

      1	//自由输入第一个正确的类型数值
      你输入了第1个数字,然后当前结果sum=1.0
      2	//自由输入第二个正确的类型数值
      你输入了第2个数字,然后当前结果sum=3.0
      3	//自由输入第三个正确的类型数值
      你输入了第3个数字,然后当前结果sum=6.0
      4	//自由输入第四个正确的类型数值
      你输入了第4个数字,然后当前结果sum=10.0
      x	//自由输入错误的类型值结束判断直接求和与平均值
      4个数的和为10.0
      4个数的平均值是2.5
      
      进程已结束,退出代码为 0
      

标签:进阶,scanner,浅学,System,println,public,输入,Scanner
From: https://www.cnblogs.com/ajunjava/p/18062854

相关文章

  • 【Python使用】python高级进阶知识md总结第1篇:My Awesome Book【附代码文档】
    python高级进阶全知识知识笔记总结完整教程(附代码资料)主要内容讲述:MyAwesomeBook,MyAwesomeBook。MyAwesomeBook,MySQL数据库。MyAwesomeBook,聚合函数。MyAwesomeBook,创建表并给某个字段添加数据。MyAwesomeBook,闭包。MyAwesomeBook,路由列表功能开发。MyAwesomeBoo......
  • golang进阶之反射
    目录一、go中变量的内在机制二、反射1.反射是把双刃剑2.反射的简介三、reflect库1.reflect.TypeOf(1)reflect.Type的name和kind(2)kind的能返回的类型如下2.reflect.ValueOf(1)反射取值(2)反射改值3.isNil()和isValid()四、结构体的反射1.StructField类型2.结构体反射示例(1......
  • Nestjs系列 Nestjs进阶(一)
    自定义装饰器简单使用当Nest内置的装饰器不能满足开发需求时,可以自定义装饰器,其自定义装饰器的规则和react的自定义hooks较为相似,自定义时,其封装必须使用Nest的内置装饰器或者其它自定义装饰器,react中是必须使用reacthooks,这一点规则类似。使用命令快速创建一个dec......
  • scanner
    Scanner对象:基本语法:newScanner(System.in);通过scanner类的next和nextLine()方法输入字符串,在读取中我们一般使用hasNext()方法与hasNextLine()判断是否还有输入数据。next()方法:1.对输入有效字符之前遇到的空白,next()方法自动将其去掉2.只有输入有效字符之后,遇到空白作为分隔符或......
  • Tomcat警告异常:org.apache.jasper.servlet.TldScanner.scanJars
    警告信息org.apache.jasper.servlet.TldScanner.scanJars至少有一个JAR被扫描用于TLD但尚未包含TLD。为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。解决方案1.打开配置文件找到Tomc......
  • 【学习笔记】 - 基础数据结构 :Link-Cut Tree(进阶篇)
    前言LCT没题写可以去写树剖和一些线段树合并的题练手LCT的概念原本的树剖是对树进行剖分,剖分为重边和轻边LCT则是对于树分为虚边和实边,特殊的,LCT可以没有虚边(例:银河英雄传说v2)单独被包含在一个实链里的点称作孤立点在树剖中,我们使用线段树/树状数组来维护重链在Link-Cut......
  • Scanner对象
    前言之前我们学的基本语法中我们并没有实现程序和人的交互,但是Java给我们提供了这样一个工具类,我们可以获取用户的输入。java.util.Scanner是Java5的新特征,我们可以通过scanner类来获取用户的输入基本语法代码Scannerstr=newScanner(System.in);通过Scan......
  • Scanner类
    ScannerScanner:其中有一个作用是获取键盘上的符号构造方法:Scanner(InputStreamsource)构造一个新的Scanner,产生从指定输入流扫描的值。InputStream字节流这里是从键盘输入字符串类型next()的和整数类型nextInt()的importjava.util.Scanner;pub......
  • 第六章 面向对象进阶
    一,分包思想1、分包思想概述(理解)如果将所有的类文件都放在同一个包下,不利于管理和后期维护,所以,对于不同功能的类文件,可以放在不同的包下进行管理2、包的概述(记忆)包本质上就是文件夹创建包多级包之间使用"."进行分割多级包的定义规范:公司的网站地址翻转(去掉w......
  • golang进阶之接口
    目录一、接口二、为什么要使用接口三、接口的定义四、实现接口的条件五、接口类型的变量1.值接收者实现接口2.指针类型接收者实现接口3.接口进阶示例六、同一个类型实现多个接口七、多个类型实现同一个接口八、类型中的嵌套去实现接口九、接口嵌套十、空接口1.空接口的定义2.......