java习题练习

1.输入年月日,求是该年的第几天

import java.util.Scanner;

public class Test{
	public static void main(String[] args){
		//输入年月日,计算是该年的多少天
		Scanner sc = new Scanner(System.in);
		System.out.print("请输入年份: ");
		int year = sc.nextInt();
		int februaryDays = 0;  //表示二月份天数
		if(year % 400 ==0 || year % 4 ==0){
			februaryDays = 29;
		}else{
			februaryDays = 28;
		}

		System.out.print("请输入月份: ");
		int month = sc.nextInt();
		while(month<1 || month >12){
			System.out.print("您输入的月份应在1-12之间,请重新输入:");
			month = sc.nextInt();
		}
		
		System.out.print("请输入日期:");
		int date = sc.nextInt();
		while(true){
			if(month==2){
				if(date<1 || date>februaryDays){
					System.out.print("您输入的日期应在1-"+februaryDays+"之间,请重新输入");
					date = sc.nextInt();
				}else{
					break;
				}
			}else if(month==4 || month==6 || month==9 || month ==11){
				if(date<1 || date>30){
					System.out.print("您输入的日期应在1-30之间,请重新输入:");
					date = sc.nextInt();
				}else{
					break;
				}
			}else{
				if(date<1 || date>31){
					System.out.print("您输入的日期应在1-31之间,请重新输入:");
					date = sc.nextInt();
				}else{
					break;
				}
			}
		}

		int[] lastdays = {0,31,31+februaryDays,31+februaryDays+31,31+februaryDays+31+30,31+februaryDays+31+30+31,31+februaryDays+31+30+31+30,31+februaryDays+31+30+31+30+31,31+februaryDays+31+30+31+30+31+31,31+februaryDays+31+30+31+30+31+31+30,31+februaryDays+31+30+31+30+31+31+30+31,31+februaryDays+31+30+31+30+31+31+30+31+30}; 
		for(int i=0;i<lastdays.length;i++){
			if(i==month-1){
				System.out.println(year+"年"+month+"月"+date+"日是"+year+"年的"+(lastdays[i]+date)+"天");
				break;
			}
		}
	}
}

2.输入一列数,从大到小输出这些数

import java.util.Scanner;

public class Test{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		System.out.print("请输入要判断的数的个数:");
		int[] num = new int[sc.nextInt()];  
		//用一个数组来接收所有的数
		for(int i=0;i<num.length;i++){
			System.out.print("请输入第"+(i+1)+"数:");
			num[i] = sc.nextInt();
		}
		
		//给数组中的元素进行排序
		//冒泡排序:相邻两数相比较,将较大数放右边,比较结束后,最大数放在了最右边,下一轮再按照样的方式比较余下的数,得到余下的数的最大值,并放最右边,直至余下的数只有一个。
		for(int i=0;i<num.length-1;i++){
			for(int j=0;j<num.length-1-i;j++){	
				//第一轮比较n个数,需比较n-1次;第二轮比较余下n-1个数,需比较n-2次;..第n-1轮比较余下2个数,需比较1次
				if(num[j]>num[j+1]){
					//每一轮中,当前一个数大于后一个数,则交换两个数的位置
					int temp = num[j];
					num[j] = num[j+1];
					num[j+1] = temp;
				}
			}
		}
		
		//排序完成后,依次输出数组中的元素
		System.out.print("顺序输出为:");
		for(int i=0;i<num.length;i++){
			System.out.print(num[i]+" ");
		}
	}
}

3.一个整数,加上100后是一个完全平方数,加上168也是一个完全平方数,求该数

public class Test{
	public static void main(String[] args){
	//如何确定一个数n是不是完全平方数,判断Math.sqrt(n)%1是否为0,为0则n是完全平方数,不为0则不是
		for(int i=0;;i++){
			if(Math.sqrt(i+100)%1==0){
				if(Math.sqrt(i+168)%1==0){
					System.out.println(i+100);
				}
			}
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值