day11 java控制流程目录 Scanner类交互输入的使用 运行中出现的bug部分

java控制流程目录

  1. 用户交互Scanner(扫描)
  2. 顺序结构
  3. 选择结构
  4. 循环结构
  5. break 和 continue(继续)
  6. 练习

scanner对象

java.util.Scanner 用来获取用户输入

Scanner s = new Scanner(System.in);

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

思维流程:
  1. 创建基本输出类
  2. 用Scanner类实例化一个对象scanner(变量)
  3. new开启Scanner的系统输入(System.in)
  4. 接受获取到的系统输入赋值给对象scanner
  5. 判断是否有输入
  6. 关闭new开启的系统输入scanner
next() :
  1. 以检测到字符串开始跑流程到结束,没检测到字符串不运行流程,并一直保持运行。
  2. 过滤输入字符串前的空格,过滤字符串中含有空格后面的字符串(除了开头空格,后面检测到空格就结束对后面的输出)
package com.ckw.blog.Scanner;

import java.util.Scanner;

public class demo01next {
    public static void main(String[] args) {
        //实例一个Scanner类的变量用来存储数据系统输入的数据,开启系统输入
        Scanner scanner =new Scanner(System.in);
        System.out.println("请输入数据!");
        //判断是否有输入数据
        if (scanner.hasNext()){
            //如果有输入,则把输入的数据赋值给str字符串变量
            String str = scanner.next();
            System.out.println("你刚才输入了:"+str);
        };
        //开启后必须对应关闭,不然会浪费系统资源。
        scanner.close();
    }
}

扩展:

package com.ckw.blog.Scanner;

import java.util.Scanner;

//看看除了scanner之外能不能变其他变量的实验
public class demo_test {
    public static void main(String[] args) {
        //实例一个Scanner类的对象jj,用于给开启的系统输入赋值
        Scanner jj =new Scanner(System.in);
        //接收到系统输入后,用next()方法把接受到的数据赋值给变量bb
        String bb = jj.next();
        System.out.println(bb);
    }
}


nextLine():
  1. 以回车键开始运行到结束
  2. 输出所有输入的字符串,包括空格
package com.ckw.blog.Scanner;
import java.util.Scanner;
public class demo02_nextLine {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        if(input.hasNext()){
            String response = input.nextLine();
            System.out.println("您刚刚输入的是:"+response);
        };
        input.close();
    }
}

判断是否输入

hasnext():

检测是否接收了字符串,返回 布尔类型

hasnextLine():

检测是否接受了回车键,返回 布尔类型

用hasnext的方法,用选择语句强制用户必须输入后才可以退出。

package com.ckw.blog.Scanner;
import java.util.Scanner;
public class demo02_nextLine {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("如果你不输入有效字符,我就一直运行下去");
        if(input.hasNext()){
            System.out.println("我收到你的输入,现在开始赋值输出");
            String response = input.nextLine();
            System.out.println("您刚刚输入的是:"+response);
        };
        input.close();
    }
}

方法区别

next() 跟nextLine()的区别

  1. next输入有效字符后面的空格会自动作为结束符,例如hello,world,只会输出hello。而nextLine可以输出全部
  2. nextLine读到回车键后结束,next一定要读到有效字符才结束。

练习

package com.ckw.blog.Scanner;

import java.util.Scanner;

public class demo02_text {
    public static void main(String[] args) {
        Scanner input =new Scanner(System.in);
        if(input.hasNext()){
            String res = input.nextLine();
            System.out.println(res);
        };
        input.close();
    }
}

易错点

总是忘记了关闭扫描。

解决方式一般启动Scanner的语句写完,就写Scanner关闭的语句。然后就在中间写需要的语句就可以了

练习02

一个简易的收银系统。

包含所学

  1. 包机制,引用包
  2. Scanner包 获取系统输入跟判断输入的值
  3. while循环机制
  4. 8种数据类型byte short char int long double float boolean
  5. 数据类型转换
package com.ckw.blog.Scanner;

import java.util.Scanner;

public class demo03_test {
    //做一个收银系统,统计下多少个顾客,卖了多少金额,平均顾客的消费水平
    //1.创建一个方法
    public static void main(String[] args) {
        //2.定义变量,人数,消费金额
        int people =1;
        int peoples =0;
        float money = 0f;
        //3.启动系统输入
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextFloat()){
            peoples=people++;
            money = scanner.nextFloat()+money;
            System.out.println("当前结账人数为"+peoples+",结账总金额为"+money);
        };
        System.out.println("今天总结账人数为"+peoples+"人,总营收金额为"+money+"元,人均消费水平为"+(int)(money/peoples)+"元");

        scanner.close();
        //用完输入记得关闭,减少系统资源占用。习惯
    }
}

编辑中出现的bug部分。

  1. 自增++需要是b=a++,不能使a=a++.这样不会自增。
  2. 自增++正确方式是a++;就可以了,不需要其他的赋值。
  3. 算总和的时候,忘了把输入跟原来的金额相加
  4. 字符串需要核对好再进行运算,不然字符串经常写错字
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值