首页 > 其他分享 >02 Scanner进阶使用

02 Scanner进阶使用

时间:2023-01-22 02:33:06浏览次数:47  
标签:02 Scanner System 键盘 println out sc1 进阶

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-20230116182021494

代码

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));
    }
}

标签:02,Scanner,System,键盘,println,out,sc1,进阶
From: https://www.cnblogs.com/zhanjianhai/p/17064151.html

相关文章

  • 01 用户交互Scanner
    01用户交互ScannerScanner要导入包:importjava.util.Scanner;从键盘上读取数据//开始时的固定套路:Scannersc1=newScanner(System.in);//中间的关键步骤:String......
  • 2023.1.21除夕课内浅浅学习
    早上-上午:1.语文:两首古诗背诵(15min)实际用时:14'07''2.英语:回顾单词(45min)实际用时32'09''3.生物:《五三》P17-P18,P179-P183(神经冲动的产生和传导)1hour20min实际用时:1ho......
  • 2023-01-21 除夕
    2023-01-21周六今天早上叫醒我的居然不是´•ﻌ•`潮剧了,也不是经典的“十仙庆寿”,依旧是叫卖声。十一点多人们就开始陆陆续续的去祠堂拜祖,期间回家贴对联,去叔叔家给他儿......
  • 2023年新年寄语
      在2023年来临之际,首先给自己加把劲,努力朝自己的目标一步一步前进,希望自己能够不畏困难,无论何时都要相信行动的力量,人生没有回头路,也不需要为昨天的事情而徒留思绪,相......
  • 2021 上海 M(Ag) 二分图 构造
    最近寒假闲来无事,所以开个博客记录记录自己做题时的一些想法和过程。当时看M官方题解时感觉有点难理解和不太符合自然思路,所以来写一个我觉得比较自然的思路。原题链接:Pr......
  • 鹅鸭杀goose goose duck注册教程2023
    《鹅鸭杀》是GaggleStudios开发的策略休闲游戏,于2021年10月4日在Steam平台上发布。 这是一款带有社交性质的游戏,具体玩法类似升级版的狼人杀。要注册Gaggle.fun账号,请......
  • 动手学数据分析 -- Task02_2
    复习:在前面我们已经学习了Pandas基础,第二章我们开始进入数据分析的业务部分,在第二章第一节的内容中,我们学习了数据的清洗,这一部分十分重要,只有数据变得相对干净,我们之后对......
  • V的2022 - 往事随风
    V的2022-往事随风其实今年想写的很多,但能下笔写出来的又太少,自己还是想保持住每年一次的习惯,而且已经有几个朋友已经在催了,还有追更的读者这是我没想到的。顺便放一......
  • 2023小目标
    新的一年开始了,给自己立个flag:持续的锻炼身体,学习英语,刷数通和sp,多读书,多实践。重仓的a股,希望今年能有超额的回报。多花时间陪一下家人,今年可以带孩子出去玩一下了。最后......
  • 2023年1月21 大年三十
    在一个弱省弱市,资源几近于零,只能凭着运气在网上东一点西一点拼凑,全凭自学,费了别人几倍的力气总算是入了一点门,算来几个月时间只学到一点皮毛,据说普及组相对容易,看再努力一......