2017java第一次作业

Java第一次作业


(一)学习总结

1.在java中通过Scanner类完成控制台的输入,查阅JDK帮助文档,Scanner类实现基本数据输入的方法是什么?不能只用文字描述,一定要写代码,通过具体实例加以说明。
scanner是一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。

先看如下代码:

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

相当于通过new Scanner(System.in)语句后,控制台会把输入的内容传递给sc,因为有不同的数据类型,所以给i赋值的时候后边可以有sc.nextInt(),nextDouble(),nextLine()等不同的类型赋值,我把它看作是一个数据类型转换的过程。

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

1.math类的random()方法产生的是0-1之间的double类的随机数,假如要产生100-200之间的随机整数,如下代码

(int)(Math.random()*100)+100;

该方法需要放大一定倍数才能产生所需要范围的的随机数,并且如果需要整数还要强制转换类型,实际上Math类中的random方法就是直接调用Random类中的nextDouble方法实现的。

2.random类产生的随机数实际上是伪随机数,相同种子数的Random对象,对应相同次数生成的随机数字是完全相同的。例如:

import java.util.Random;
public class suiji{
public static void main(String[] args){
Random s1 = new Random(100);
Random s2 = new Random(100);
for(int i=0;i<5;i++){
	System.out.println(s1.nextInt(50));
}
for(int x=0;x<5;x++){
	System.out.println(s2.nextInt(50));
}
	}
}

输出结果为

15 0 24 38 41

15 0 24 38 41。

(二)实验总结

1.猜价格游戏

程序设计思路:首先用random生成一个1-100之间的随机数,使用一个可以循环10次的for循环,在这10次循环中,每次输入一个数,如果大于该随机数,则提醒价格高了,如果小于该随机数则提醒价格低了,直到猜对或者10次机会用完跳出循环。

扩展:玩完一次选择继续游戏或者退出:在主方法中加入一个无限循环,最后选择继续则继续循环(游戏),选择退出则退出循环(游戏)。

2.万年历

程序设计思路:设计一个判断是否闰年的方法,一个计算从1900年到输入月份的总天数的方法,一个计算每月天数的方法,通过总天数对7求余来判断该月的第一天是周几,再逐行输出。

  • 实验问题分析:

问题1:第一行输出的天数无法与下面对齐

原因:没有在数字前后加入空格对齐

解决方案:

		if (n < 10)                               // 对齐输出
		System.out.print(n + "   ");
		else
		System.out.print(n + "  ");

问题2:如果该月的第一天是周日,则数字会在这一行末开始输出完整的一行

原因:周日为第一天会空出7个空格来

解决方案:

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

如果周日为第一天则不输出空格

(三)代码托管

(四)学习进度条

posted @ 2017-03-13 13:48  程飞飞  阅读(272)  评论(2编辑  收藏  举报