作业一

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

输入需要三个步骤:
import java.util.Scanner;//输入
Scanner num=new Scanner(System.in);//输入
int k=num.nextInt();//输入
2.Random类和Math类的random()方法都能产生随机数,这两种方式有什么区别,各有什么特点呢?查阅JDK帮助文档,并举例加以说明。
Math.random()返回的只是从0到1之间的小数,如果要50到100,就先放大50倍,即0到50之间,这里还是小数,如果要整数,就强制转换int,然后再加上50即为50~100.
最终代码:(int)(Math.random()*50) + 50
Random类产生的随机数,在其最大值范围内,按照概率均匀分布的。也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同。
举例:

3.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");
}
}
}
结果是:不等于
修改后:

需要精确计算结果,要用BigDecimal类
(二)实验总结

实验内容:
1.看商品猜价格
2.万年历
3.评分系统
1:
package lianxi;

import java.util.*;
import java.util.Random;

public class Caijiage {
public static void main(String args[]) {

	Random jiage = new Random();
	Scanner cai = new Scanner(System.in);
	int caijiage, shijijiage, i, defen,zongfen=0,i1=0;
	String Str, Str1;
	Str1 = "Y";
	shijijiage = jiage.nextInt(101);
	do {
		i = 0;
		System.out.println("欢迎来到你猜 你猜 你猜猜猜 环节,请输入商品价格,你有五次机会,猜中了,奖品就是你的,价格区间0-100。");
		do {
			caijiage = cai.nextInt();
			if (caijiage < 0 || caijiage > 100) {
				System.out.println("超出范围了");
				i++;
			}
			if (caijiage == shijijiage) {
				System.out.println("不错,猜对了");
				System.out.println("得分为" + (5 - i) * 20 + "商品价格为" + shijijiage);
				zongfen=zongfen+((5 - i) * 20);
				i++;
				break;
			} else if (caijiage < shijijiage) {
				System.out.println("这次不行,猜低了");
				i++;
				System.out.println("你还有" + (5 - i) + "次机会");
			} else if (caijiage > shijijiage) {
				System.out.println("这次不行,猜高了");
				i++;
				System.out.println("你还有" + (5 - i) + "次机会");
			}
		} while (i < 5);
		if (i == 5 && caijiage != shijijiage) {
			defen = 0;
			System.out.println("\n你都没猜对,商品价格为" + shijijiage);
			System.out.println("得分为" + defen);
		}
		System.out.println("是否继续?Y/N?");
		Str = cai.next();
		i1=i1+i;
	} while (Str.equals(Str1));
	System.out.println("\n你总共猜了"+i1+"次,你总共得了"+zongfen+"分");
}

}

设计思路:需要产生随机数的同时需要用户键盘输入,两者进行比较大小,同时,要分清楚次数与分数之间的函数关系,所猜次数利用循环进行限制。
2:
package lianxi;

import java.util.*;

public class Rili {
public static void main(String args[]) {
int i, i1, month, sum;
Scanner year = new Scanner(System.in);
System.out.println("输入年月");
i = year.nextInt();
i1 = year.nextInt();
if (isleap(i)) {
System.out.println(i + "年不是闰年");
} else {
System.out.println(i + "年是闰年");
}
month = days(i, i1);
System.out.println(i + "年" + i1 + "月有" + month + "天");
sum = totaldays(i, i1);
System.out.println("总天数为" + sum);
System.out.println(i + "年" + i1 + "月日历为:");
print(i, i1);
}

public static boolean isleap(int year) {//判断闰年
	boolean flag = true;
	if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
		flag = false;
	}
	return flag;
}

public static int days(int year, int month) {//月份天数
	int a, b, i;
	isleap(year);
	if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
		b = 31;
	} else if (month == 4 || month == 6 || month == 9 || month == 11) {
		b = 30;
	} else {
		if (isleap(year)) {
			b = 28;
		} else {
			b = 29;
		}
	}
	return b;
}

public static int totaldays(int year, int month) {//总天数
	int i, j, day = 0;
	for (i = 1900; i < year; i++) {
		for (j = 1; j <= 12; j++) {
			day = day + days(i, j);
		}
	}
	for (i = year; i < year + 1; i++) {
		for (j = 1; j < month; j++) {
			day = day + days(i, j);
		}
	}
	return day;
}

public static void print(int year, int month) {//遍历
	int i, b, x1 = 0, c;
	b = 1 + totaldays(year, month) % 7;
	c = days(year, month);
	System.out.printf("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\n");
	if (b != 7) {
		for (i = 0; i < b; i++) {
			System.out.printf("\t");
			x1++;
		}
	}
	for (i = 1; i <= c; i++) {
		System.out.printf("  %-2d\t", i);
		x1++;
		if (x1 != 0 && x1 % 7 == 0) {
			System.out.println("");
		}
	}
}

}

设计思路:分清闰年的判定条件,算出所求年份到1900年之间有几个闰年有几个平年,进行天数相加,再加上截止到本年某月份的天数,为总天数,之后进行日历输出。
3:
老师,手动输入50个数太累了。。我这个是25个分数。
package lianxi;

import java.util.Arrays;
import java.util.Scanner;

public class Dafen {
public static void main(String args[]) {
int i, j, data[][] = new int[5][5],max[]=new int[5],min[]=new int[5];
double ave[]=new double[5];
System.out.println("输入5位选手的成绩");
Scanner fenshu = new Scanner(System.in);
for (i = 0; i < 5; i++) {
for (j = 0; j < 5; j++) {
data[i][j] = fenshu.nextInt();
}
}
for(i=0;i<5;i++) {
Arrays.sort(data[i]); // 排序
}
/for (i = 0; i < 2; i++) {
for (j = 0; j < 3; j++) {
System.out.println(data[i][j]);
}
}
/
System.out.print("最高分分别为");
for(i=0;i<5;i++) {
max[i]=max(data[i]);
System.out.print(max[i]+" ");
}
System.out.print("\n");
System.out.print("最低分分别为");
for(i=0;i<5;i++) {
min[i]=min(data[i]);
System.out.print(min[i]+" ");
}
System.out.print("\n");
System.out.print("平均分分别为");
for(i=0;i<5;i++) {
ave[i]=ave(data[i]);
System.out.print(ave[i]+" ");
}
System.out.print("\n");
Arrays.sort(ave); // 排序
System.out.print("排序后平均分为:");
for(i=4;i>=0;i--) {
System.out.print(ave[i]+" ");
}
}
public static int max(int arr[]){
return arr[4];
}
public static int min(int arr[]){
return arr[0];
}
public static double ave(int arr[]) {
int i;
double sum=0;
double ave=0;
for(i=1;i<4;i++) {
sum=arr[i]+sum;
ave=(double)sum/3;
}
return ave;
}
}

设计思路:
将分数存到数组,用函数进行排序,去除最大值和最小值,将数组剩下的分数进行求和,求平均数,然后存放到新数组,将新数组排序输出。
(三)代码托管

posted on 2018-03-14 21:38  Mty灬  阅读(206)  评论(0编辑  收藏  举报

导航