首页 > 代码库 > java基础04

java基础04

今天来看看关于年月日的几道练习题,其中包含了while无限循环,如果判断不正确,用户会一直卡在循环中,直到用户输入正确,这几道习题非常具有逻辑性,现在我们来看看这几道练习题是怎么做的。

 

1.让用户输入年月日,输出这是该年的第几天

import java.util.Scanner;

public class Problem13 {

public static void main(String[] args) {

Scanner scan = new Scanner(System.in);

int year, month, day;

while (true) {

System.out.print("请输入年份(1900-2200):");

year = scan.nextInt();

if (year < 1900 || year > 2200) {

System.out.println("您输入年份有误,请重新输入");

} else {

break;

}

}

while (true) {

System.out.print("请输入月份(1-12):");

month = scan.nextInt();

if (month < 1 || month > 12) {

System.out.println("您输入月份有误,请重新输入");

} else {

break;

}

}

while (true) {

System.out.print("请输入多少号:");

day = scan.nextInt();

if(month==2){

if(year%4==0&&year0!=0||year@0==0){

if(day>=1&&day<=29){

break;

}

}else{

if(day>=1&&day<=28){

break;

}

}

}else if(month<=7&&month%2!=0||month>7&&month%2==0){

if(day>=1&&day<=31){

break;

}

}else{

if(day>=1&&day<=30){

break;

}

}

System.out.println("您输入有误,请重新输入");

}

// 方式1

// int sum=0;

// switch(month){

// case 1:

// sum=0;

// break;

// case 2:

// sum=31;

// break;

// case 3:

// sum=59;

// break;

// case 4:

// sum=90;

// break;

// case 5:

// sum=120;

// break;

// case 6:

// sum=151;

// break;

// case 7:

// sum=181;

// break;

// case 8:

// sum=212;

// break;

// case 9:

// sum=243;

// break;

// case 10:

// sum=273;

// break;

// case 11:

// sum=304;

// break;

// case 12:

// sum=334;

// break;

// default :

// break;

// }

// sum+=day;

// //判断闰年还是平年

// int add;

// if((year%4==0&&year0!=0)||year@0==0){

// add=1;

// }else{

// add=0;

// }

//

// if(add==1&&month>2){

// sum++;

// }

//

// System.out.println("这是"+year+"年的第"+sum+"天");

// 方式2

int sum = 0;

for (int i = 1; i < month; i++) {

// 每个月的天数不一样

if (i == 2) {// 闰年和平年判断

// if((i%4==0&&i0!=0)||i@0==0){

// //闰年

// sum+=29;

// }else{

// sum+=28;

// } or

sum += 28;

if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {

sum++;

}

} else if (i <= 7 && i % 2 != 0 || i > 7 && i % 2 == 0) {// 小于等于7月的奇数月是大月,大于7月的偶数月是大月

sum += 31;

} else {// 其他月是小月

sum += 30;

}

}

// 输入day

sum += day;

System.out.println("这是" + year + "年的第" + sum + "天");

}

}

2.让用户输入年月,输出从1900年1月1日,到该年该月的1日经过多少天

import java.util.Scanner;

public class Problem14 {

  public static void main(String[] args) {

 Scanner scan=new Scanner(System.in);

 int year, month;

while (true) {

System.out.print("请输入年份(1900-2200):");

year = scan.nextInt();

if (year < 1900 || year > 2200) {

System.out.println("您输入年份有误,请重新输入");

} else {

break;

}

}

while (true) {

System.out.print("请输入月份(1-12):");

month = scan.nextInt();

if (month < 1 || month > 12) {

System.out.println("您输入月份有误,请重新输入");

} else {

break;

}

}

 

 int day=1;

 

   

//  int sum=0;

////  现将每月份前一个月有多少天用sum接收

//   switch(month){

//   case 1:

//    sum=0;

//    break;

//    case 2:

//    sum=31;

//    break;

//    case 3:

//    sum=59;

//    break;

//    case 4:

//    sum=90;

//    break;

//    case 5:

//    sum=120;

//    break;

//    case 6:

//    sum=151;

//    break;

//    case 7:

//    sum=181;

//    break;

//    case 8:

//    sum=212;

//    break;

//    case 9:

//    sum=243;

//    break;

//    case 10:

//    sum=273;

//    break;

//    case 11:

//    sum=304;

//    break;

//    case 12:

//    sum=334;

//    break;

//    default :

//    break;

//   }

//   

// 

//   

//  //输入年份的时候判断是闰年还是平年

//  int add=0;

// 

//  for(int i=1900;i<=year;i++){

//  if((i%4==0&&i0!=0)||i@0==0){

//    add=1;

//    }else{

//    add=0;

//    }

//    

//    if(add==1&&month>2){

//    sum++;

//    }

//    

//    

//  }

//    

//    sum=365*(year-1900)+sum;

//    System.out.println(sum);

 

 

 //方法2

 int sum=0;

  for(int i=1900;i

  

   

 if((i%4==0&&i0!=0)||i@0==0){

 sum++;

 }

sum+=365;

  }

  for(int j=1;j

   //每个月的天数不一样

   if(j==2){//闰年和平年判断

//    if((i%4==0&&i0!=0)||i@0==0){

//    //闰年

//    sum+=29;

//    }else{

//    sum+=28;

//    } or

   sum+=28;

   if((year%4==0&&year0!=0)||year@0==0){

   sum++;

   }

   

   }else if(j<=7&&j%2!=0||j>7&&j%2==0){//小于等于7月的奇数月是大月,大于7月的偶数月是大月

   sum+=31;

   }else{//其他月是小月

   sum+=30;    

   }

  }

  

  System.out.println(sum);

  }

}

3.让用户输入年月,输出该年该月的1号是星期几(已知1900年1月1日是星期一)

import java.util.Scanner;

public class Problem15 {

     public static void main(String[] args) {

     Scanner scan=new Scanner(System.in);

     int year, month, day;

  while (true) {

  System.out.print("请输入年份(1900-2200):");

  year = scan.nextInt();

  if (year < 1900 || year > 2200) {

  System.out.println("您输入年份有误,请重新输入");

  } else {

  break;

  }

  }

  while (true) {

  System.out.print("请输入月份(1-12):");

  month = scan.nextInt();

  if (month < 1 || month > 12) {

  System.out.println("您输入月份有误,请重新输入");

  } else {

  break;

  }

  }

  while (true) {

  System.out.print("请输入多少号:");

  day = scan.nextInt();

  if(month==2){

  if(year%4==0&&year0!=0||year@0==0){

  if(day>=1&&day<=29){

  break;

  }

  }else{

  if(day>=1&&day<=28){

  break;

  }

  }

  }else if(month<=7&&month%2!=0||month>7&&month%2==0){

  if(day>=1&&day<=31){

  break;

  }

  }else{

  if(day>=1&&day<=30){

  break;

  }

  }

  System.out.println("您输入有误,请重新输入");

  }

     

   int sum=0;

  for(int i=1900;i

  

   

 if((i%4==0&&i0!=0)||i@0==0){

 sum++;

 }

sum+=365;

  }

  for(int j=1;j

   //每个月的天数不一样

   if(j==2){//闰年和平年判断

//    if((i%4==0&&i0!=0)||i@0==0){

//    //闰年

//    sum+=29;

//    }else{

//    sum+=28;

//    } or

   sum+=28;

   if((year%4==0&&year0!=0)||year@0==0){

   sum++;

   }

   

   }else if(j<=7&&j%2!=0||j>7&&j%2==0){//小于等于7月的奇数月是大月,大于7月的偶数月是大月

   sum+=31;

   }else{//其他月是小月

   sum+=30;    

   }

  }

   sum+=day-1;

 

//   switch(sum%7){

//    case 0:

//    System.out.println("星期一");

//      break;

//    case 1:

//    System.out.println("星期二");

//      break;

//    case 2:

//    System.out.println("星期三");

//      break;

//    case 3:

//    System.out.println("星期四");

//      break;

//    case 4:

//    System.out.println("星期五");

//      break;

//    case 5:

//    System.out.println("星期六");

//      break;

//    case 6:

//    System.out.println("星期天");

//      break;

//    

//     }

   

   System.out.println("经过了"+sum+"天");

   System.out.println(year+"年"+month+"月"+day+"日是星期"+(sum%7+1));

   

}

java基础04