产生随机数的方法
Math.random()方法
产生一个0——1之间的double值,如果想转化成一定区间内的随机值,可以使用
kx + b
。此方法在J2SE中有,在J2ME中没有。System.currentTimeMillis()方法
此方法返回从1970年1月1日00:00:00至当前时间的毫秒数。返回类型是long。对此结果进行取模运算,即可得到固定范围内的随机值。
java.util库中Random类
可以新建Random对象产生随机数,可以产生int,float,double,long。Random类的构造方法中也是使用上述第2种方法产生随机数的。
java.util.Random r = new java.util.Random(); int a = r.nextInt;
产生随机字符
随机小写字母:
(char)('a' + Math.random() * ('z' - 'a' +1))
条件表达式
boolean-expression ? num1 : num2
举例:
System.out.println((num % 2 = 0) ? "Num is even" : "Num is odd");
格式化控制台输出
问题:如何输出浮点值小数点后两位
法一:乘对应位数,通过int转化
double a = 2.0 / 3; System.out.println("a is " + (int)(x * 100) / 100.0);
法二:使用printf方法格式化输出
double a = 2.0 / 3; System.out.printf("x is %4.2f" , x);
默认情况下,输出是右对齐的,可以在标识符中放一个负号
-
,表示该条目在特定区域中的输出是左对齐的。举例:
%5c
输出字符并在字符前加4个空格;%6b
输出bool值,并在false前加一个空格,在true前加两个空格;%5d
输出十进制整数条目,宽度至少为5位,不足5位前面补空格,超过5位自动增加宽度;%10.2f
输出浮点数,宽度至少为10,包含小数点和小数点后两位。如果小数点前的位数小于7,则在前面加空格,若大于7位则自动增加宽度;%10.2e
输出的条目宽度至少为10,包括小数点、小数点后两位和指数部分。若总宽度小于10,就给前面加空格。%12s
输出字符串宽度至少为20,若小于12位则在前面加空格,若大于12位则自动增加宽度;
输入重定向和输出重定向
程序从文件中读取输入,而不是让用户在运行时从键盘输入数据,称为输入重定向;将输出发送给文件,而不是将他们输出在控制台上,称为输出重定向。可以使用下面的命令运行
SentinelValue.java
生成的class文件,即从input.txt文件中读取输入数据java SentinelValue < input.txt
将输出发送给文件output.txt:
java SentinelValue > output.txt
可以同时使用:
java SentinelValue < input.txt > output.txt
最小化数值误差
double num = 0.01; double sum = 0; for(int i = 0; i < 100; i ++){ sum += num; num += 0.01; }
以上代码执行完毕后,结果本应是50.50,但实际结果是50.49999999999995,因为浮点数使用近似值表示的,是有限精度计算的产物。在大数之前先增加较小的数是减小误差的一种方法。
Math数学类
- Math.PI;
- Math.E;
- 三角函数方法;
- 指数函数方法;
- 取整方法;
- max, min, abs方法;
- random方法;