这里先用一段代码展示
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