• #《Java技术》第一次作业


    (一)学习总结

    1:Scanner类实现基本数据输入的方法是什么?
    构造Scanner对象,并与System.in连用。
    Scanner input=new Scanner(System.in);
    调用Scanner的各种方法完成输入操作。
    int num=input.nextlnt();
    2:区别:
    Math类的random()方法可以生成大于等于0.0、小于1.0的double型随机数。
    Random类的随机方法是设定随机种子的(如:new Random().nextInt(10))。
    特点:
    Math类的random():直接调用Random类中的nextDouble方法实现的,比较方便。
    Random类:相同随机种子在相同的随机次数中产生的随机数是一样的。
    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");
            }
        }     
    }
    

    为了处理精度损失的问题,可以使用java.math.BigDecimal类,查阅JDK帮助文档或教材p378,对上述程序进行修改。
    输出结果是不等于0.3,有误差。
    4:第一题的扩展用的到了String类的equal方法不会,所以没有写第一题的扩展。

    (二)实验总结

    一.猜数游戏

    import java.util.Random;
    import java.util.Scanner;
    public class Guess {

    public static void main(String[] args) {
    	Scanner input=new Scanner(System.in);
    	Random rand=new Random();
    	System.out.println("只能猜10次哦");
    	int in=rand.nextInt(100);
    	
    	int i=0;
    	for(i=0;i<10;i++){
    		int num=input.nextInt();
    		if(num==in){
    			System.out.println("猜对了");
    			System.out.println("商品的价格为:"+in);
    		}
    		else if(num<in){
    				System.out.println("猜小了");
    			}
    		else{
    				System.out.println("猜大了");
    			}
    		}
    	System.out.println("商品的价格为:"+in);
    }
    

    }

    -程序设计思路:用Scanner实现用户的输入,通过与用Random产生的随机数比较,来判断猜测的是否对
    -实验问题分析:
    问题1:输出的时候明明显示猜对了,却发现输出的值比以前输得数结果显示猜小了了的值还小。
    原因:输出的是用户输入的值。
    解决方案:改成接收产生随机数那个变量。
    二万年历
    import java.util.Scanner;
    public class year {

    public static void main(String[] args) {
    	System.out.println("请输入年份");
    	Scanner input=new Scanner(System.in);
    	int year=input.nextInt();
    	if(isLeap(year)==true){
    		System.out.println("是闰年");
    	}
    	else{
    		System.out.println("不是闰年");
    	}
    	System.out.println("请输入月份");
    	Scanner in=new Scanner(System.in);
    	int month=in.nextInt();
    	printCalender(year,month);
    	
    }
    public static boolean isLeap(int year){
    	if((year%4==0&&year%100!=0)||year%400==0){
    		return true;
    		}
    	else{
    		return false;
    	}
    }
    public static int days(int year,int month){
    	int day,g = 0;
    	boolean a;
    	a=isLeap(year);
    	if(a==true){
    	if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){
    		day=31;
    	}
    	else if(month==4||month==6||month==9||month==11){
    		day=30;
    	}
    	else{
    		day=29;
    	}
    }
    	else{
    		if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){
    			day=31;
    		}
    		else if(month==4||month==6||month==9||month==11){
    			day=30;
    		}
    		else{
    			day=28;
    		}
    	}
    	return day;
    

    }
    public static int totaDays(int year,int month){
    int sum1=0,sum2=0,sum,g;
    for(int i=1900;i<year;i++){
    if(isLeap(i)){
    sum1+=366;
    }
    else
    {
    sum1+=365;
    }
    }

    	for(g=1;g<month;g++){
    		sum2+=days(year,g);
    	}
    	sum=sum1+sum2;
    	return sum;
    }
    public static void printCalender(int year,int month){
    	int day,a,b,c,d;
    	a=days(year,month);
    	d=totaDays(year,month);
    	System.out.println("距1900年1月1日天数为:"+d);
    	System.out.println("这个月天数为:"+a);
    	c=(1+d%7);
    	System.out.println("月初是星期:"+c);
    	System.out.println("星期一	星期二	星期三	星期四	星期五	星期六	星期日");
    	for(b=1;b<c;b++) {
    		System.out.printf("	");
    	   }
    	for(int i=1;i<=a;i++){
    			System.out.printf(" %2d	",i);
    			if((i+c-1)%7==0){      
    				System.out.printf("
    ");
    			}
    		}
    
    
    			
    }
    

    }
    -程序设计思路:用到了闰年的计算方法,还有怎样计算月初是星期几,函数的调用。
    -实验问题分析:
    问题1:计算到1900年1月1日的天数总是不对,老是多好多天。
    原因:public static int totaDays(int year,int month)再用这个函数时,在月数相加时,循环变量从0开始。
    解决方案:自己找了好久都没发现,同学帮忙改的。
    问题2:月份输出格式不对
    原因:换行语句不对。
    解决方案:在调用public static int totaDays(year,month)这个函数计算月初是周几时,加了一个1,需要把这个1减去。
    三评分
    import java.util.Arrays;
    public class average {

    public static void main(String[] args) {
    	int score[][]={
    			{
    				1,8,9,8,6,7,3,7,6,10
    			},
    			{
    				4,3,7,9,5,9,1,9,8,3
    			},
    			{
    				9,1,3,4,5,6,8,9,7,2
    			},
    			{
    				7,9,6,7,8,1,3,4,10,2
    			},
    			{
    				7,9,2,7,6,7,9,5,10,1
    			}
    		};
    		ave(score);
    }
    	public static int getMax(int score[][]) {
    	int max=score[0][0];
    	for(int i=0;i<score.length;i++) {
    		for(int j=0;j<score[i].length;j++) {
    			if(score[i][j]>max) {
    				max=score[i][j];
    			}
    		}
    	}
    	return max;
    }
    	public static int getMin(int score[][]) {
    		int min=score[0][0];
    		for(int i=0;i<score.length;i++) {
    			for(int j=0;j<score[i].length;j++) {
    				if(score[i][j]<min) {
    					min=score[i][j];
    				}
    			}
    		}
    		return min;
    	}
    	public static void ave(int score[][]){
    		int b,c,sum=0;
    		double a[];
    		a=new double[score.length];
    		b=getMax(score);
    		c=getMin(score);
    		double ave;
    		for(int i=0;i<score.length;i++) {
    			sum=0;
    			for(int j=0;j<score[i].length;j++) {
    				sum+=score[i][j];
    			}
    			sum=sum-b-c;
    			ave=(double)sum/(score[i].length-2);
    			a[i] =ave;
    		}
    		Arrays.sort(a);
    		for (int i=score.length-1;i>=0;i--) {
    		System.out.println("第"+(score.length-i)+"位选手的得分为:"+a[i]);
    		}
    
    	}
    

    }
    -程序设计思路:用二维数组完成静态赋值,然后在子函数中找到最大值最小值,在计算平均分的时候调用,将平均分放到一维数组中,用Arrays.sort(a)进行排列。
    -实验问题分析:
    问题1:计算结果不对。
    原因:二维数组没有定义大小,求平均分的时候除以的8,。
    解决方案:求平均分时应该除以(score[i].length-2)。

    (三)代码托管

  • 相关阅读:
    那些ubuntu创建用户踩过的坑
    Build tools
    version control(以git为例)讲解
    URI和URL的区别
    HTTP解析过程心得
    函数式编程(functional programming)
    cb45a_c++_STL_算法_删除_(3)_unique(唯一的意思)删除连续性的重复的数据
    cb44a_c++_STL_算法_删除_(2)remove_copy_remove_copy_if
    cb43a_c++_STL_算法_删除_(1)remove_remove_if
    cb42a_c++_STL_算法_替换_replace
  • 原文地址:https://www.cnblogs.com/1998li/p/8593002.html
Copyright © 2020-2023  润新知