(一)学习总结
1.在java中通过Scanner类完成控制台的输入,查阅JDK帮助文档,Scanner类实现基本数据输入的方法是什么?不能只用文字描述,一定要写代码,通过具体实例加以说明。
可以通过“Scanner”函数 直接输入参数的形式,来实现输入语句,举例( 数值型):
import java.util.Scanner;
public class Test{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
System.out.println("请输入一个数值:");
int length=input.nextlnt();//输入一个正整数
System.out.println("输入的数字是:"+length);}
}
2.Random类和Math类的random()方法都能产生随机数,这两种方式有什么区别,各有什么特点呢?查阅JDK帮助文档,并举例加以说明。
Math类的random()方法可以生成大于等于0.0、小于1.0的double型随机数。
公式:
int num=(int)(Math.random()n); //返回大于等于0小于n之间的随机数
int num0=m+(int)(Matn.randon()n); //返回大于等于m小于m+n(不包括m+n)之间的随机数
例如:取2~22之间的偶数
public class MathRandomDemo{
public static int GetevenNum(double num1,double num2){
int s=(int)num1+(int)(Math.random()*(num2-num1));
if(s%2==0){ return s; } else retuen s+!; }
public static void main(String[] args){
System.out.println("任意一个"+num1+"~"+num2+"之间的偶数:"+GeteneNum(2,22)); } }
还可以随机生成字符例如:1.随机生成a~z之间的字符(char)('a'+Math.random()*('z'-'a'+1));
2.随机生成cha1~cha2的字符(char)(cha1+Math.random()*(cha2-cha1+1));
Random类生成随机数1.语法:Random ran=new Random();
以这种形式实例化对象时,Java编译器以系统当前时间作为随机数生成器的种子,因为每时每刻的时间都不可能相同,所以产生的随机数也不同。如果运行速度太快,也会产生两次运行结果相同的随机数。
可以在实例化Random类对象时,自定义随机数生成器的种子。
语法:Random ran=new Random(seedValue);
Random类中还提供各种类型随机数的方法: nextInt():返回一个随机整数(int) nextInt(int n):返回大于等于0、小于n的随机整数(int) nextLong():返回一个随机长整型值(long) nextBoolean():返回一个随机布尔型值(boolean) nextFloat():返回一个随机浮点型值(float) nextDouble():返回一个随机双精度型值(double) nextGaussian():概率密度为高斯分布的双精度值(double)
例:import java.util.Random; public class Demo{ public static void main(String[] args){ Random ran=new Random(); System.out.println("产生一个随机整数:"+ran.nextlnt()); } }
3.运行下列程序,结果是什么?查阅资料,分析为什么。
public class Test {
public static void main(String args[]) {
double a = 0.1;
double b = 0.1;
double c = 0.1;
if((a + b + c) == 0.3){
System.out.println("等于0.3");
}else {
System.out.println("不等于0.3");
}
}
}
结果是:不等于0.3
原因:精度的损失, 可以使用java.math.BigDecimal类
修改后:
package yisan;
import java.math.MathContext;
import java.math.BigDecimal;
public class Test {
public static void main(String args[]) {
BigDecimal a = new BigDecimal(0.1);
BigDecimal b = new BigDecimal(0.1);
BigDecimal c = new BigDecimal(0.1);
if(a.add(b).add(c).round(new MathContext(1)).equals(new BigDecimal("0.3"))){
System.out.println("等于0.3");
}
else {
System.out.println("不等于0.3");
}
}
}
4、
(二)实验总结
实验内容:
1.看商品猜价格
程序设计思路:先产生一个随机数,然后进入循环,输入竞猜价格,如果猜对后输出猜的次数和商品价格,没有猜对则输出猜大了还是猜小了重新猜,只能猜十次
问题1:十次没有猜对后没有任何提示
解决方案:又加入一个if语句,十次没有才对输出对不起只能竞猜十次,并且输出商品价格
2.万年历
程序设计思路;输入年份和月份后输出从1900年1月1日到本月的总天数,并且输出这个月的日历
问题1:日历的生成总是有问题
原因:总天数循环出错
解决方案:
3.评分系统
(三)代码托管
