zoukankan      html  css  js  c++  java
  • Java基础之:数组练习题

    Java基础之:数组练习题

    第一题

    		//1. 循环打印输入的月份的天数。 【使用continue实现】
    		//	–	要有判断输入的月份是否错误的语句 
    import java.util.Scanner;	
    public class HomeWork1
    {
    	public static void main(String[] args){
    
    		Scanner input = new Scanner(System.in);
    		int year,month,day;
    		boolean flag = false;
    		String temp;
    		do{
    			System.out.println("请输入年月日:");
    			year = input.nextInt();
    			month = input.nextInt();
    			day = input.nextInt();
    
    			if(!(month >= 1 && month <=12)){
    				System.out.println("输入月份不正确!");
    				continue;
    			}else{
    				if(!(day >= 0)){
    					System.out.println("输入日期不正确!");
    					continue;
    				}else{
    					//1、3、5、7、8、10、12月每月31天,4、6、9、11月每月30天 ,2月28天
    					switch(month){
    						case 1:
    						case 3:
    						case 5:
    						case 7:
    						case 8:
    						case 10:
    						case 12:
    							if(!(day <= 31)){
    								System.out.println("输入日期不正确!");
    							}else{
    								System.out.printf("输入日期为:%d年%d月%d日
    ",year,month,day);
    							}
    							break;
    						case 4:
    						case 6:
    						case 9:
    						case 11:
    							if(!(day <= 30)){
    								System.out.println("输入日期不正确!");
    							}else{
    								System.out.printf("输入日期为:%d年%d月%d日
    ",year,month,day);
    							}
    							break;
    						case 2:
    							if(!(day <= 28)){
    								System.out.println("输入日期不正确!");
    							}else{
    								System.out.printf("输入日期为:%d年%d月%d日
    ",year,month,day);
    							}
    							break;
    					}
    				}
    			}
    
    			System.out.println("是否继续输入?(Y/N)");
    			temp = input.next();
    			if("Y".equalsIgnoreCase(temp)){
    				flag = true;
    			}else if ("N".equalsIgnoreCase(temp)){ 
    				flag = false;
    			}else{
    				System.out.println("输入错误!");
    				break;
    			}
    		}while(flag);
    		
    		System.out.println("程序结束!");
    	}
    }
    

      

    第二题

    /**
    	2. 随机猜数游戏: 【选做】
    	随机生成一个1——100的整数 
    	有十次机会 
    	如果第一次就猜中,提示 “你真是个天才” 
    	如果第2——3次猜中,提示“你很聪明,赶上我了” 
    	如果第4——9次猜中,提示“一般般” 
    	如果最后一次猜中,提示“可算猜对啦” 
    	一次都没猜对,提示“说你点啥好呢” 
    	【嵌套循环】
    */
    import java.util.Scanner;	
    public class HomeWork2
    {
    	public static void main(String[] args){
    		Scanner input = new Scanner(System.in);
    		int  inGuess = 0;
    		int  guessNumber = (int)(Math.random()*100) + 1;//这里一定要加一,因为random是[0,1)的随机数
    		for(int i = 1 ; i <= 10 ; i++){
    			System.out.printf("请输入你猜的数(1-100),还有%d次机会哦:
    ",10-i);
    			inGuess = input.nextInt();
    			if(inGuess == guessNumber){
    				if(i == 1){
    					System.out.println("你可真是天才!");
    					break;
    				}else if(i<=3){
    					System.out.println("你很聪明,赶上我了!");
    					break;
    				}else if(i<=9){
    					System.out.println("一般般!");
    					break;
    				}else if(i == 10){
    					System.out.println("可算猜对啦!");
    					break;
    				}
    			}else{
    				if(!(i == 10)){
    					if(inGuess > guessNumber){
    						System.out.println("大了");
    					}else{
    						System.out.println("小了");
    					}
    					continue;
    				}else{
    					System.out.println("说你点啥好呢!答案是:"+ guessNumber);
    				}
    			}
    		}
    	}
    }
    

      

    第三题

    /**
    	输出100以内的所有素数(只能被1和自己整除的数, 1不是素数),每行显示5个;并求和。
    	sqrt()开平方
    */
    import java.util.Scanner;	
    public class HomeWork3
    {
    	public static void main(String[] args){
    		int sum = 0;
    		int count = 1;
    		boolean flag = true;	//默认每个数都是素数
    		for(int i = 2 ; i <= 100 ; i++){	//1不是素数从2开始判断
    			//每次都需要重置flag , 因为flag标志了这个数是否为素数,所以每循环一个数就要重置一次
    			flag = true;
    
    			for(int j = 2 ; j < (i/2+1) ; j++){	//这里可以只取j-i之间范围的一半,因为后一半 等于 前一半*2
    				if(i % j == 0){
    					flag = false;	//若这个数不是素数则改变flag
    					break;
    				}
    			}
    
    			if(!flag){
    				continue;
    			}else{
    				sum += i;
    				if(count != 5){
    					System.out.printf(i + "	");
    					count++;
    				}else{
    					System.out.println(i);
    					count = 1;	//重置count  这个是计算每行输出了多少个元素的变量
    				}
    			}
    		}
    		System.out.println();
    		System.out.println("所有素数之和为:" + sum);
    	}
    }
    

      

    第四题

    /**
    	 中国有句俗语叫“三天打鱼两天晒网”。
    	 如果从1990年1月1日起开始执行“三天打鱼两天晒网”。
    	 如何判断在以后的某一天中是“打鱼”还是“晒网”?(年,月,日是输入的.) 
    
    	 这里假设输入的日期都是正确的
    
    	 思路:
    	 1.首先计算从当前日期到1990年1月1日一共有多少天
    	 2.用总天数 对 5取模。
    */
    import java.util.Scanner;	
    public class HomeWork4
    {
    	public static void main(String[] args){
    		Scanner input = new Scanner(System.in);
    		System.out.println("请输入年月日:");
    		int year = input.nextInt();
    		int month = input.nextInt();
    		int day = input.nextInt();
    		int totalDay = 0 ; //累计记录从输入日期到1990/1/1有多少天
    
    		for(int i = 1990 ; i < year ;i++){	//计算年
    			if(i % 400 == 0 || i % 4 ==0 && i % 100 != 0 ){
    				totalDay += 366;
    			}else{
    				totalDay += 365;
    			}
    		}
    		
    		//计算月 方式1
    //		for(int i = 1 ; i < month; i++){	//计算月	
    //			switch(i){ 
    //				//1、3、5、7、8、10、12月每月31天,4、6、9、11月每月30天 ,2月28天
    //				case 1:
    //				case 3:
    //				case 5:
    //				case 7:
    //				case 8:
    //				case 10:
    //				case 12:
    //					totalDay += 31;
    //					break;
    //				case 4:
    //				case 6:
    //				case 9:
    //				case 11:
    //					totalDay += 30;
    //					break;
    //				case 2:		//由于当前年没有判断闰年 所以这里还是需要考虑
    //					if(year % 400 == 0 || year % 4 ==0 && year % 100 != 0 ){
    //						totalDay += 29;
    //					}else{
    //						totalDay += 28;
    //					}
    //					break;
    //			}
    //		}
    
    		//第二种计算月的方式,不使用循环,进行了优化,但影响不大,因为月份只有1-11
    		switch(month - 1){	//当前月份不用计算天数,此方法充分利用的"穿透"的特性!
    			//12月不用计算
    			case 11:
    				totalDay += 30;
    			case 10:
    				totalDay += 31;
    			case 9:
    				totalDay += 30;
    			case 8:
    				totalDay += 31;
    			case 7:
    				totalDay += 31;
    			case 6:
    				totalDay += 30;
    			case 5:
    				totalDay += 31;
    			case 4:
    				totalDay += 30;
    			case 3:
    				totalDay += 31;
    			case 2:
    				if(year % 400 == 0 || year % 4 ==0 && year % 100 != 0 ){
    					totalDay += 29;
    				}else{
    					totalDay += 28;
    				}
    			case 1:
    				totalDay += 31;
    		}
    
    		totalDay += day;	//计算日
    
    //		if(totalDay % 5 >= 1 && totalDay % 5 <= 3){
    //			System.out.printf("%d年%d月%d日这天在 打鱼!
    ",year,month,day);
    //		}else{
    //			System.out.printf("%d年%d月%d日这天在 晒网!
    ",year,month,day);
    //		}
    		
    		switch(totalDay % 5){
    			case 1:
    			case 2:
    			case 3:
    				System.out.printf("%d年%d月%d日这天在 打鱼!
    ",year,month,day);
    				break;
    			default:
    				System.out.printf("%d年%d月%d日这天在 晒网!
    ",year,month,day);
    		}
    	}
    }
    

      

  • 相关阅读:
    剑指offer4:重建二叉树(后序遍历)
    剑指offer3:从尾到头打印链表每个节点的值
    剑指offer2:C++实现的替换空格(字符中的空格替换为“%20”)
    tp5系统变量输出(可以用来传递搜索的参数)
    Ajax实现文件上传的临时垃圾文件回收策略
    php获取当天的开始时间和结束时间
    Think PHP递归获取所有的子分类的ID (删除当前及子分类)
    tp查找某字段,排除某字段,不用一次写那么多
    git-查看历史版本及回滚版本
    dedecms目录结构,非常全
  • 原文地址:https://www.cnblogs.com/SongHai/p/14018247.html
Copyright © 2011-2022 走看看