早教吧作业答案频道 -->其他-->
用java编写实现:输出为输入日期后一天的日期。注意边界值问题,不要有bug。函数包含三个变量:month、day和year,函数的输出为输入日期后一天的日期。例如,输入为2006年3月7日,则
题目详情
用java编写实现:输出为输入日期后一天的日期。注意边界值问题,不要有bug。
函数包含三个变量:month 、 day 和 year ,函数的输出为输入日期后一天的日期。 例如,输入为 2006年3月 7日,则函数的输出为 2006年3月8日 。要求输入变量 month 、 day 和 year 均为整数值,并且满足下列条件:
①1≤month≤12
②1≤day≤31
③1920≤year≤2050
函数包含三个变量:month 、 day 和 year ,函数的输出为输入日期后一天的日期。 例如,输入为 2006年3月 7日,则函数的输出为 2006年3月8日 。要求输入变量 month 、 day 和 year 均为整数值,并且满足下列条件:
①1≤month≤12
②1≤day≤31
③1920≤year≤2050
▼优质解答
答案和解析
日期的判断修改了一下,日期的最大值是本月的最大天数,不是31
------------------------------------------------------------------------------------
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Scanner;
public class T {
public static int[] dates = new int[3];
public static void main(String[] args) throws Exception {
String[] input = { "input year :", "input month :", "input day :" };
Scanner sc = new Scanner(System.in);
for (int i = 0; i < input.length; i++) {
dates[i] = input(input[i], sc, i);
}
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, dates[0]);
calendar.set(Calendar.MONTH, dates[1] - 1);
calendar.set(Calendar.DATE, dates[2] + 1);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(sdf.format(calendar.getTime()));
}
public static int input(String message, Scanner sc, int index) {
while (true) {
System.out.print(message);
String str = sc.nextLine();
try {
int result = Integer.parseInt(str);
if (index == 0 && !(result >= 1920 && result <= 2050)) {
System.out.println("1920≤year≤2050");
continue;
}
if (index == 1 && !(result >= 1 && result <= 12)) {
System.out.println("1≤month≤12");
continue;
}
if (index == 2) {
int end = endDay(dates[0], dates[1]);
if (!(result >= 1 && result <= end)) {
System.out.println("1≤day≤" + end);
continue;
}
}
return result;
} catch (Exception e) {
System.out.println("input error!");
}
}
}
public static int endDay(int year, int month) {
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month);
c.set(Calendar.DATE, 0);
return c.get(Calendar.DATE);
}
}
------------------------------------------------------------------------------------
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Scanner;
public class T {
public static int[] dates = new int[3];
public static void main(String[] args) throws Exception {
String[] input = { "input year :", "input month :", "input day :" };
Scanner sc = new Scanner(System.in);
for (int i = 0; i < input.length; i++) {
dates[i] = input(input[i], sc, i);
}
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, dates[0]);
calendar.set(Calendar.MONTH, dates[1] - 1);
calendar.set(Calendar.DATE, dates[2] + 1);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(sdf.format(calendar.getTime()));
}
public static int input(String message, Scanner sc, int index) {
while (true) {
System.out.print(message);
String str = sc.nextLine();
try {
int result = Integer.parseInt(str);
if (index == 0 && !(result >= 1920 && result <= 2050)) {
System.out.println("1920≤year≤2050");
continue;
}
if (index == 1 && !(result >= 1 && result <= 12)) {
System.out.println("1≤month≤12");
continue;
}
if (index == 2) {
int end = endDay(dates[0], dates[1]);
if (!(result >= 1 && result <= end)) {
System.out.println("1≤day≤" + end);
continue;
}
}
return result;
} catch (Exception e) {
System.out.println("input error!");
}
}
}
public static int endDay(int year, int month) {
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month);
c.set(Calendar.DATE, 0);
return c.get(Calendar.DATE);
}
}
看了 用java编写实现:输出为输...的网友还看了以下:
1.a≠0,b≠0,则a/|a|+b/|b|的不同取值的个数为()A.3B.2C.1D.02.若|x 2020-03-31 …
基本不等式超费解130已知a>b>0,求a2+1/(a*b)+1/[a*(a-b)]的最小值.a2 2020-05-13 …
设集合A={1,a,b},B={a,a^2,ab}且A=B,求实数A,B的值因为集合需要满足互异性 2020-05-15 …
有关拉格朗日定理(群论)的问题拉格朗日定理如下:设是群的一个子群,那么R={|a属于G,b属于G, 2020-05-17 …
赤道上重力加速度g,赤道上随地球自转的向心加速度a,要使赤道上物体飘起来,地球的转速应为原来的?A 2020-05-22 …
用以下英文宇母填在上a,a,a,a,a,a,b,e,e,d,e,e,e,e,e,e,f,g,g用以 2020-06-24 …
由A+T/C+G=1和A+G/T+C=1,为何不能判断该DNA分子是双链还是单链?不是只有双链才能 2020-06-26 …
假设集合A满足以下条件:诺a∈A,a不等于1,则1-a分之1属于A若a属于A,则1-a分之一属于A 2020-07-03 …
下图表示限制酶切割某DNA的过程,从图中可知,该限制酶能识别的碱基序列及切点是A.CTTAAG,切 2020-07-31 …
非空集合G关于运算○满足;1,对于任意a,b∈G,都有a○b∈G;2,存在e∈G,使对尤其是那个e 2020-08-01 …