if(scanner.hasNext())的个人理解

这里先用一段代码展示

import java.util.Scanner;
public class hello {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入一个数");
        if(scanner.hasNextInt())/*判断下一个输入的数据是否属于int类型,
        如果条件为真,执行if内语句*/                  
        {
            int i = scanner.nextInt();//将输入的值赋值给int类型 i
            System.out.println("输出的整数为: "+i);
        }
        if(scanner.hasNextFloat())/*判断下一个输入的数据是否属于float
        类型,如果条件为真,则执行if内语句*/
        {
            float f = scanner.nextFloat();/*将输入的值赋值给float类型 f,
            并将其自动转化为float类型输出*/
            System.out.println("输出的小数为: "+f);
        }
        scanner.close();//凡是属于I/O流的类如果不关闭就会一直占用资源
    }
}

代码执行结果:
运行结果

  • 不理解的问题
    为什么输入一个整数后再输入一个整数,第二个整数会转化成float类型,如果 “if(scanner.hasNextInt())/判断下一个输入的数据是否属于int类型,如果条件为真,执行if内语句/ ” 这句话是对的,它又为什么会进入第二个if语句?
  • 现在的思路:关于if(scanner.hasNextInt())的解释应该是正确的,但是if(scanner.hasNextFloat())中对float类型的判定应该是兼容了int类型,即int类型的整数也属于float类型,才会导致整数也能进入第二个if语句
  • 至于为什么输入的数字为小数时,会直接跳过第一个循环,是因为不满足第一个if语句的条件但是满足第二个if语句的条件,直接跳过第一个if语句执行第二个if语句,程序一般情况下时自上而下执行的

另外补充的是,float i =10;这句话是对的,在输出时将会自动转化为10.0

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值