Java第一次作业

《JAVA》第一次作业

(一)学习总结

1.在java中通过Scanner类完成控制台的输入,查阅JDK帮助文档,Scanner类实现基本数据输入的方法是什么?不能只用文字描述,一定要写代码,通过具体实例加以说明。

以下代码使用户能够从 System.in 中读取一个数:

 Scanner sc = new Scanner(System.in);
 int i = sc.nextInt();

输入的数据保存在变量sc中,Scanner对于输入的数据类型没有限制,但如果想要对这些数据进行输出就要对以储存的数据进行转换后才能输出。
例如,通过Scanner输入一个数字66,输出转换之前与转换之后的区别

显示为:

jdk文档中还有更多的Scanner的使用方法来实现更多的功能,现在只接触到了next的方法,以后有需要时可以再去查看。

2.Random类和Math类的random()方法都能产生随机数,这两种方式有什么区别,各有什么特点呢?查阅JDK帮助文档,并举例加以说明。

util的random是一个类:包含nextInt(),nextDouble ()等类似的方法。
math的random只是一个方法:返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。
例如,对比两种方法产生的随机数:

import java.util.Random;
public class Demo{
	public static void main(String args[]){
		Random a=new Random();
		int a1=a.nextInt();
		double b=Math.random(); 
		System.out.println("这是调用Random()类产生的随机数");
		System.out.println(a1);
		System.out.println("这是调用Math.random()方法产生的随机数");
		System.out.println(b);
	}
}

运行三次后产生的结果:

而我们也可以使用Math.Random()的方法来产生Int类型的随机数,例如产生一个0~100之间的随机数:

import java.util.Random;
public class Demo{
	public static void main(String args[]){
		Random a=new Random();
		int b=a.nextInt();
		int c=(int)(Math.random()*100); 
		System.out.println("这是调用Random()类产生的随机数");
		System.out.println(b);
		System.out.println("这是调用Math.random()方法产生的随机数");
		System.out.println(c);
	}
}

运行三次后产生的结果:

两种方法都能够起到相同的作用,但是,如果许多线程需要以极高的速率生成伪随机数,那么Math.random()可能会减少每个线程对拥有自己伪随机数生成器的争用。所以很多应用程序会发现 Math.random() 方法更易于使用。

3.本次学习要点中其他需要总结的内容:

  • Java和c在逻辑有着很多共同点,只是在语法方面有所不同,但Java比c增加了更多的功能,适用性更加广泛,所以学过c再接触Java并不会有太多的难点。
  • 任何一门计算机语言在学习时都需要进行反复的练习,如果不在平时多使用,当然会觉得一门语言很难。没事的时候写几个程序,看看别人开源项目,自然不会觉得难。

(二)实验总结

1.猜数游戏

  • 程序设计思路:

产生一个随机数,采用for循环重复输入。对比随机数与用户输入数,使用if判断,如果相等,使用break跳出循环,如果不相等,提示用户输入价格偏高或偏低,还有XX次机会并继续输入。

  • 实验问题分析:

    问题:用户如果在最后一次猜对价格仍然判定为猜错且不能显示正常的对话,不能正常结算积分
    原因:在循环时出现错误,导致用户在最后一次输入的数据不能正常传入判断方法进行判断
    解决方案:修改主方法的循环方法以及已经猜测的次数的自增,当次数到最后一次时进行额外的判断

2.万年历

  • 程序设计思路:

判断用户输入的年份是否是闰年,计算出距1990年有多少年并通过用户输入的月份计算出距1990年1月1日有多少天,可以得到日期对应的星期,之后计算月初对应的星期以及月份对应的天数并一一对应输出。

  • 实验问题分析:

    问题:在对查询月份月初前边应该空出几格时出现疑问
    原因:不知道如何空出合适的格数以及如何时把第一行的每一天对应的位置进行分配
    解决方案:对第一行创建与其他行不同的排序方式,且通过月初是星期几来判断前边应该空出几格

(三)代码托管

  • 码云commit历史截图

(四)学习进度条

代码行数(新增/累积) 学习时间(新增/累积) 本周学习内容
目标 5000行 300小时
第2-4周 300/300 15/15 学习了用Scanner从控制台输入和随机数的创建和应用
第5周
第6周
posted @ 2017-03-05 14:49  某hentai  阅读(686)  评论(2编辑  收藏  举报