Java基础语法(二)

本文深入介绍了Java基础语法,包括Scanner类用于用户交互,随机数类Random的使用,以及顺序、选择、循环结构的详细讲解,如if...else、switch语句,while、do...while、for循环,还有break和continue的跳转控制。
摘要由CSDN通过智能技术生成

Java基础语法(二)

合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。 ——《道德经》

十、用户交互 Scanner 类(引用数据类型)

  1. Java 5 后引入 java.util.Scanner 这一个包,我们可以通过 Scanner 这一个类来获取用户的输入

  2. 基本语法:

    import java.util.Scanner;	//使用Scanner需要先导包
    	......
    	Scanner scanner = new Scanner(System.in);
    
  3. 通过 Scanner 类的 next() 和 nextLine() 方法获取输入的字符串,在读取前一般需要使用 hasNext() 或 hasNextLine() 判断是否还有输入的数据

    next():
    1.一定要读取到有效字符后才能结束输入。
    2.对输入有效字符之前遇到的空白,next()方法会自动将其去掉。
    3.只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
    4.next()不能得到带有空格的字符串!
    
    nextLine():
    1.以 Enter 为结束符,即nextLine()方法返回的是输入回车之前的所有字符。
    2.nextLine()可以获取空白!
    
  4. 用完 Scanner (或者其他 IO 流的类),如果不关闭会一直占用资源,所以用完就关闭是一个好习惯。

    关闭 Scanner:

    	Scanner s = new Scanner(System.in);
    	......
        s.close();	//关闭 Scanner
    
  5. Scanner 的进阶使用。

    hasNext()		:用来是否还有输入的字符串
    next() 			:用来接受控制台录入的字符串
    
    hasNextInt()	:用来是否还有输入的整数
    nextInt() 		:用来接受控制台录入的整数
    
    hasNextFloat()	:用来是否还有输入的浮点数
    nextFloat() 	:用来接受控制台录入的浮点数
    
    hasNextDouble()	:用来是否还有输入的浮点数
    nextDouble() 	:用来接受控制台录入的浮点数
    
    

其中,hasNextFloat() 和 hasNextDouble() 功能基本相同,但特别的是,当控制台输入的不管是小数还是整数,这两个方法的结果都返回 true ,并且会把输入的整数变成小数。

而 hasNextInt() 只有在控制台输入的是整数才返回 true

import java.util.Scanner;

public class demo01 {
   

    public static void main(String[] args) {
   

        Scanner scanner = new Scanner(System.in);

        int i = 0;
        double d = 0.0;

        if(scanner.hasNextInt()){
   
            i = scanner.nextInt();
            System.out.println("i = "+i);
        }else{
   
            System.out.println("输入的不是整数!");
        }

        if(scanner.hasNextDouble()){
   
            d = scanner.nextDouble();
            System.out.println("d = "+d);
        }else{
   
            System.out.println("输入的不是小数!");
        }

        scanner.close();
    }
}
上述代码的三种结果:
1.输入整数:
20				//键盘输入
i = 20
20				//键盘输入
d = 20.0

2.输入小数:
3.14			//键盘输入
输入的不是整数!
d = 3.14

3.输入字符串(非数字)
hello			//键盘输入
输入的不是整数!
输入的不是小数!

结果分析:

1.输入整数:

当输入第一个20时,由于输入的是整数,第一个20被scanner.nextInt() 接收并赋值给 i 并输出 i = 20。

此时程序 scanner.hasNextDouble() 等待控制台再次输入,所以再次输入第二个20,被scanner.nextDouble() 接收并赋值给 d 并输出 d = 20.0。

2.输入小数:

输入 3.14 时,由于不是整数,无法被scanner.nextInt() 接收并赋值,所以输出 “ 输入的不是整数!”。

由于输入的 3.14还没被接收,所以会继续给scanner.nextDouble() 判断和接收。

3.输入字符串:

输入字符串 hello 时,在整个程序中,既没被scanner.nextInt() 接收也没被scanner.nextDouble() 接收。

原因分析:

为什么输入整数,scanner.nextDouble()返回 true 并且将整数转换为 double 类型的小数?

这就得对scanner.nextDouble()的源码进行分析。(按住Ctrl键+点击源程序的scanner.nextDouble()方法查看源代码)

Double.parseDouble()是把括号里面String类型的内容变成double类型。

也就是说,当我们在控制台输入整数20时,它在程序中会先被转换为String 类型的字符串赋值给 s ,接着通过Double.parseDouble()是把括号里面String类型的字符串 s 变成double类型然后返回,所以整数20就转换成了double类型的20.0。

为什么输入字符串,scanner.nextDouble()返回 false?

这是因为源代码中 catch 抛出了一个NumberFormatException(数字格式化异常),查看字符串里面夹杂着string或者其他类型。当输入字符串时,便会返回 false 。所以,我们在使用控制台手动输入小数时,不能在小数后面加上 F 或 D ,否则报错。但是在程序中定义数字则可以

十一、随机数类 Random(引用数据类型)(扩展)

Random类,它可以产生多种数据类型的随机数,在这里主要介绍生成整数与小数的方式。

  • public int nextInt(int maxValue) 产生 [0,maxValue) 范围的随机整数,包含0,不包含maxValue;

  • public double nextDouble() 产生 [0,1) 范围的随机小数,包含0.0,不包含1.0。

//Random 使用方法
import java.util.Random;	//导包

......
    //Random 变量名 = new Random();
    Random r = new 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值