一.源代码:题目是求当前日期(年月日)的下一天(年月日),源代码已编好。
```java
package javaexperiment1;
//导包
import java.util.Scanner;
public class NextDate {
public static void main(String[] args) {
int year,month,day;
//创建对象
Scanner sc = new Scanner(System.in);
//分别输入年月日
System.out.println("请输入年月日");
//接收数据
/*先定年月日输入值的界限*/
boolean error;
do{
System.out.println("请输入年份(1~5000):");
year = sc.nextInt();
error = year<1 || year>5000;
}while(error);//若error为true则重新输入年份
do{
System.out.println("请输入月份(1~12):");
month = sc.nextInt();
error = month<1 || month>12;
}while (error);
/*判断月份,特殊为2月*/
int num;
switch (month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: num = 31; break;
case 2: num = (year%4==0&&year%100!=0 || year%400==0)? 29:28; break;
default: num = 30;
}
do{
System.out.println("请输入日(1~"+ num +"):");
day = sc.nextInt();
error = day<1 || day>num;
}while (error);
/*当输入的年月日都合法之后*/
/*特殊为年末和月末*/
System.out.println("请输入当前日期:"+ year +"-"+ month +"-"+ day);
if (month == 12 && day==num){
year++;
month = 1;
day = 1;
}
else if (day==num && month!=12){
month++;
day = 1;
}
else if (day!=num && month!=12){
day++;
}
System.out.println("下一天日期:"+ year +"-"+ month +"-"+ day);
}
}
二.题目要求如下(修改已编好的“求下一天年月日的程序”):
实验内容 :
(1)把实验一的项目文件夹JavaExperiment1复制一份,把新复制的文件夹修改为JavaExperiment3,在IDEA中打开项目文件夹JavaExperiment3,鼠标右键单击项目名称,在弹出的菜单中选择“重构”->"重命名",把项目名称修改为JavaExperiment3,在JavaExperiment3项目中完成本次实验。
(2) 通过IDEA的重构功能把项目的顶层包重命名为javaexperiment3,把NextDate类重命名为MyDate类。
(3) 把原来main方法中完成的功能分解到MyDate类的属性和普通方法中:把变量year、month和day定义成私有的成员变量并定义每个属性的getter方法,定义获取日期的getDate方法,把判断是否是闰年的功能提取到isLeapYear方法中,把获取一个月包含的天数的功能提取到getLengthOfMonth方法中,把输入年月日并对输入的数据进行校验的功能提取到inputData方法中,把计算输入日期的下一个日期的方法提取到nextDate方法中,重构后的MyDate类的UML类图如下图所示:
(4)在MyDate类中添加getDayOfYear方法,该方法判断输入的日期是一年中的第几天并返回判断结果。重构的MyDate类的UML类图如下图所示:
(5)在项目包中创建名为Test的测试类,在Test类的main方法中创建MyDate类的对象,通过创建的对象分别调用inputData、nextDate、getDayOfYear、getDate方法完成测试并输出结果。
import java.util.Scanner;
public class MyDate {
private int year;
private int month;
private int day;
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month = month;
}
public int getDay() {
return day;
}
public void setDay(int day) {
this.day = day;
}
public boolean isLeapYear() {
return year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
}
public void nextDate() {
int num = getLengthOfMonth(month);
if (month == 12 && day == num) {
year++;
month = 1;
day = 1;
} else if (day == num && month != 12) {
month++;
day = 1;
} else if (day != num && month != 12) {
day++;
}
}
public int getLengthOfMonth(int month) {
/*判断月份,特殊为2月*/
int num;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
num = 31;
break;
case 2:
num = (isLeapYear()) ? 29 : 28;
break;
default:
num = 30;
}
return num;
}
public void inputData() {
//创建对象
Scanner sc = new Scanner(System.in);
//分别输入年月日
System.out.println("请输入年月日");
boolean error;
do {
System.out.println("请输入年份(1~5000):");
year = sc.nextInt();
error = year < 1 || year > 5000;
} while (error);//若error为true则重新输入年份
do {
System.out.println("请输入月份(1~12):");
month = sc.nextInt();
error = month < 1 || month > 12;
} while (error);
int num = getLengthOfMonth(month);
do {
System.out.println("请输入日(1~" + num + "):");
day = sc.nextInt();
error = day < 1 || day > num;
} while (error);
/*当输入的年月日都合法之后*/
/*特殊为年末和月末*/
System.out.println("请输入当前日期:" + year + "-" + month + "-" + day);
}
public String getDate() {
return year + "-" + month + "-" + day;
}
public int getDayOfYear() {
int sum = 0;
for (int i = 0; i < 12; i++) {
sum += getLengthOfMonth(i + 1);
}
return sum;
}
}
源代码都有了,复制粘贴修改位置都不会的吗
你这还叫题目吗?几乎每一步的操作步骤写给你了啊,装好IDEA,一步一步照着来就行了啊
基本上都给你了,按着步骤来