首页 > 代码库 > 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