Scanner类,Random类和Math类的random()方法

(一)学习总结

1.Scanner类

  • java.util包中的Scanner类———一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。

  • 以下代码使用户能够从 System.in 中读取一个数:
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
    类似的,有以下几种使用方法:
         double nextDouble()将输入信息的下一个标记扫描为一个 double。 
         float nextFloat() 将输入信息的下一个标记扫描为一个 float。 
         int nextInt()  将输入信息的下一个标记扫描为一个 int。 
         String nextLine() 此扫描器执行当前行,并返回跳过的输入信息。 
         long nextLong() 将输入信息的下一个标记扫描为一个 long。 

实例

import java.util.Scanner;
public class TestScanner {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        System.out.print("请输入数字: ");
        int x=input.nextInt();  //读取空格回车前INT型数据
        System.out.println(x); 
    }
}

2.Random类和Math类的random()方法

java.util包中Random类——此类的实例用于生成伪随机数流。
java.lang包中Math类random() 方法返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。
    提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。 

实例

import java.util.Random;
public class RandomNum{
    public static void main(String[] args){
        Random r1 = new Random(100);//第一个Random对象r1,随机种子100以内
        System.out.println("r1产生的值:"+r1.nextInt());
        System.out.println("Math.random产生的值:"+(Math.random()));
    }
}

结果: r1产生的值:71
Math.random产生的值:0.7341007050248206(int)(Math.random()*100)强制转化整数放大100倍为73
如果看Math的random方法的实现代码的话,就会发现,该方法就是调用的Random类的nextDouble()方法。
Math类的random方法使用较方便,不需要导包、创建对象,所以许多人习惯于使用该方法。

3.本次学习总结

    1.JDK,JVM,JRE的理解
    JDK:编译环境(编译类库 + 编译程序) + JRE 。
    JRE:解释环境(解释类库 + 运行工具) + JVM。
    JVM:java虚拟机,JRE的一部分。
    2.C语言与Java对应数据类型的不同
    Java有boolean类型,true和false不是1和0.。

(二)实验总结

1.猜价格

程序设计思路:构建开始start,猜Guess,退出计算ExitGame三个方法,依次调用使用。

问题1:猜对次数与计算分数的关系不能控制
原因:逻辑不缜密
解决方案:使用for语句根据猜对次数依次扣分

问题2:退出函数不能判断回车继续
原因:调用方法不当
解决方案:调用scanner类中的Scan.nextLine()方法

        System.out.println("输入退出则退出游戏!回车键继续");
        String Right = "退出";
        Scanner Scan = new Scanner(System.in);
        if (Scan.nextLine().equals(Right)) {
            System.out.println("退出游戏成功,您共得" + grade + "分");
            System.exit(0);
        }

2.万年历

程序设计思路:依次写出判断闰年,计算时间等方法,在打印方法上调用。
问题1:不能准确将日历依次排列换行打印
原因:未找到换行方法
解决方案:设置flag,记录每月前空格和日期,7个换行

        for (int Null = 0; Null < week; Null++) {
            if (week == 7) {
                break;
            }
            System.out.print("  \t");
        }

        int kday = days(year, month);
        for (int k = 1; k <= kday; k++) {
            System.out.printf("%2d\t", k);
            week++;
            if (week % 7 == 0) {
                System.out.println();
                System.out.print("\t\t");
            }
        }

(三)代码托管

https://git.oschina.net/hebau_cs15/hebau-cs01ZJY.git

你可能感兴趣的:(Scanner类,Random类和Math类的random()方法)