zoukankan      html  css  js  c++  java
  • java第一次作业

    (一)学习总结:
    1.Scanner类实现基本数据输入的方法是什么?
    java程序运行从键盘输入需要用到Scanne类,用Scanner类需要在程序的开头表明头文件java.util.Scanner
    Scanner类输入文字遇到空格和或回车会结束输入。nextLine()可以输入包括空格。

    package java1;
    import java.util.Scanner;
    public class Java1 {
    
    	public static void main(String[] args) {
    
    		Scanner in = new Scanner(System.in);
    		int input = in.nextInt();                                    //输入
    		System.out.println("您输入的是:"+input);
    	}
    }
    

    2.Random类和Math类的random()方法都能产生随机数,这两种方式有什么区别,各有什么特点呢?查阅JDK帮助文档,并举例加以说明。
    Math.random() //返回的数是0到1之间的小数
    (int)(Math.random()*10) //如果要产生1到10之间,则需要扩大10倍;如果要输出正数需要强制转化

    Random.in = new Random(); // Random类产生的随机数,在范围内按照概率均匀分布每次生成数的概率相同

    3.3.运行下列程序,结果是什么?
    结果如下图:

    由图可知,结果与3很接近但是不等于3,double型只会保留16位,计算机在执行是会损失精度

    (二)实验总结
    实验内容:
    1.看商品猜价格

    package 猜价格;
    import java.util.Scanner;
    
    import java.util.Random;
    public class CaiJia {
    	public static void main(String args[]) {
    	Scanner scan = new Scanner(System.in);
    	System.out.println("输入竞猜的价格:");
    	int price = scan.nextInt();
    //	System.out.println("竞猜的价格是"+price);
    	Random rand = new Random();
    	int a,number=1;
    	a = rand.nextInt(100);
    //	System.out.println("商品的价格是:"+a);
    	while(number<11)
    	{
    		if(price==a)
    		{
    			System.out.println("恭喜您第"+number+"次猜中了");break;
    		}
    		else
    		{
    			if(a>price)
    			{
    				System.out.println("您猜小了");
    			}
    			else if(a<price)
    			{
    				System.out.println("您猜大了");
    			}
    			if(number==10)
    			{
    				System.out.println("商品的价格是"+a);
    			}
    		}
    		price = scan.nextInt();
    		number++;
    	}
    }
    }
    

    程序设计思路:
    1:利用随机函数生成一个随机数
    2:让用户从键盘输入所猜的价格
    3:用while循环判断用户输入的是否与随机数一样
    问题:
    1:随机数不能正常使用
    原因:在头文件加上import java.util.Random;

    2.万年历

    package 万年历;
    import java.util.Scanner;
    
    
    public class WanNianLi {
    	
    	//判断平年还是闰年
    	public static void panRunNian(int year){
    			if(year%4==0&&year%100!=0||year%400==0) {
    				System.out.println(year+"年是闰年");
    			}
    			else {
    				System.out.println(year+"年是平年");
    			}		
    	}
    //判断距离1900年1月1号的天数
    	public static int panTianShu(int year,int month){
    		int years,day,days=0,mday = 0,months;
    		for(years=1900;years<year;years++) {
    			if(years%4==0&&years%100!=0||years%400==0) {
    				day=366;
    			}
    			else {
    				day=365;
    			}
    			days=day+days;
    		}
    		
    
    		days=panYueTian(year,month,days);
    		days=days+1;
    
    //		System.out.println(year+"年"+month+"月有"+mday+"天");
    		System.out.println(year+"距离1900年1月1日"+(days-1)+"天");
    		return days;
    	}
    		//判断每个月的天数
    	public static int panYueTian(int year,int month,int days) {
    		int mday = 0,months;
    		for(months=1;months<month;months++) {
    			if(months==1||months==3||months==5||months==7||months==8||months==10||months==12) {
    				mday=31;
    			}
    			if(months==4||months==6||months==9||months==11) {
    				mday=30;
    			}
    			if(months==2) {
    				if(year%4==0&&year%100!=0||year%400==0) {
    					mday=29;
    				}
    				else {
    					mday=28;
    				}
    			}
    			days=days+mday;
    		}
    		return days;
    	}
    
    //输出万年历方法
    	public static void print(int year,int month,int week) {
    		int x = 0,mday = 0,number;
    		
    		System.out.println("      ==========="+year+"年===========");
    		System.out.println("                    "+month+"月   ");
    		System.out.println("星期日   星期一    星期二    星期三    星期四   星期五  星期六");
    		System.out.println("==================================================");
    		switch (week%7) {
    		case 0:System.out.print("");break;
    		case 1:System.out.print("	");break;
    		case 2:System.out.print("		");break;
    		case 3:System.out.print("			");break;
    		case 4:System.out.print("				");break;
    		case 5:System.out.print("					");break;
    		case 6:x=0;break;
    		}
    		if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) {
    			mday=31;
    		}
    		if(month==2) {
    			if(year%4==0&&year%100!=0||year%400==0) {
    				mday=29;
    			}
    			else {
    				mday=28;
    			}
    		}
    		x=week;
    		for(number=1;number<=mday;number++) {
    			x++;
    			System.out.print(number+"	");
    			if(x%7==0) {
    				System.out.println();
    			}
    		}
    	}
    	//主方法调用
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub	
    		int days=0,week;
    		Scanner in1 = new Scanner(System.in);
    		Scanner in2 = new Scanner(System.in);
    		System.out.println("请输入年和月用回车隔开:");
    		int year = in1.nextInt();
    		int month = in2.nextInt();
    		
    		panRunNian(year);
    		days=panTianShu(year,month);
    		week=days%7;
    //		System.out.println(days);
    //	System.out.print(week);
    		print(year, month, week);
    		
    		
    	}
    
    }
    

    设计思路
    1:设计函数判断平年还是闰年
    2:设计函数每个月的天数
    3:计算出所输入年份距离1900年1月1日的天数
    4:用天数跟7求余,计算出是周几

    问题:
    1:天数跟7求余总是少一天
    解决:求周几时将总天数加1或者求余之后再加1;
    3.评分系统

    package 评分系统;
    
    import java.util.Arrays;
    import java.util.Random;
    import java.util.Scanner;
    public class PingFen {
    
    	private static final int[] PingFen = null;
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		System.out.println("***评分系统***");
    		int score[][] = new int[10][5];
    		int i,j;
    		int max[] = new int[5];
    		int min[] = new int[5];
    		int pingjun[] = new int [10];
    		Random rand = new Random();
    		Scanner input = new Scanner(System.in);
    		System.out.println("请为各位选手评分");
    		for(i=0;i<10;i++) {
    			System.out.println("请各位评委对第"+(i+1)+"位选手进行评分:");
    			for(j=0;j<5;j++) {
    				score[i][j]=rand.nextInt(11);
    				System.out.println("请第"+(j+1)+"位评委评分:"+score[i][j]);
    				
    			}
    		}
    		max = zuiDa(score);
    		min = zuiXiao(score);
    		pingjun = pingJun(score,max,min);
    		Arrays.sort(pingjun);
    		for(i=0;i<10;i++){		
    				System.out.println("第"+(i+1)+"位选手的最大评分为:"+max[i]);
    				System.out.println("第"+(i+1)+"位选手的最小评分为:"+min[i]);
    				System.out.println("第"+(i+1)+"位选手的最终评分为:"+pingjun[i]);
    		}
    		for(i=0;i<5;i++) {
    			System.out.println("第"+(i+1)+"名:"+pingjun[i]);
    		}
    		
    	}
    	public static int[] zuiDa(int a[][]){
    		int i,j;
    		int max[]={0,0,0,0,0,0,0,0,0,0};
    		for(i=0;i<10;i++){
    			for(j=0;j<5;j++){
    				if(a[i][j]>max[i]){
    					max[i]=a[i][j];
    				}
    			}
    		}
    		return max;
    		
    	}
    	public static int[] zuiXiao(int a[][]){
    		int i,j;
    		int min[]={10,10,10,10,10,10,10,10,10,10};
    		for(i=0;i<10;i++){
    			for(j=0;j<5;j++){
    				if(a[i][j]<min[i]){
    					min[i]=a[i][j];
    				}
    			}
    		}
    		return min;		
    	}
    	public static int[] pingJun(int a[][],int max[],int min[]){
    		int sum=0,i,j;
    		int pingjun[]=new int[10];
    		for(i=0;i<10;i++){
    			for(j=0;j<5;j++){
    				sum=a[i][j]+sum;
    			}
    			sum=sum-min[i]-max[i];
    			pingjun[i]=sum/3;
    			sum=0;
    		}
    		return pingjun;
    	}
    }
    

    设计思路:
    1:定义一个二维数组里面存放5位评委给10位选手的评分
    2:定义3个一维数组分别存放10位选手的最大值最小值和平均值
    3:利用 Arrays.sort(pingjun);函数对平均分进行排序
    问题:
    1:利用 Arrays.sort(pingjun);函数排序时总是从小排序
    解决:将排序后的结果倒叙输出

  • 相关阅读:
    MCU 51-7 I2C Communication EEPROM
    FinalShell(免费的XShell替代品)
    Docker部署Redis
    Docker-Compose部署ELK
    Linux清空文件
    Linux防火墙的操作
    VSCode远程连接Linux服务器
    Apollo分布式配置中心
    SpringBoot整合log4j2
    MySQL区分大小写
  • 原文地址:https://www.cnblogs.com/myfdpk/p/8576268.html
Copyright © 2011-2022 走看看