java推算日期后天_分别用C++和Java写的计算后天的日期code
标签:#include
#include
#include
using namespace std;
bool checkNum(char c){
if(c >='0' && c <='9')
return true;
return false;
}
bool checkString(string str){
if(checkNum(str[0])&&checkNum(str[1])&&checkNum(str[2])
&&checkNum(str[3])&&(str[4]=='-')&&checkNum(str[5])
&&checkNum(str[6])&&(str[7]=='-')&&checkNum(str[8])&&checkNum(str[9]))
return true;
return false;
}
int main(){
string str;
int year;
int month;
int day;
while(cin>>str){
int flag = 1;
if(!checkString(str)){
flag=0;
cout<
}else{
year=(str[0]-'0')*1000+(str[1]-'0')*100+(str[2]-'0')*10+(str[3]-'0');
month=(str[5]-'0')*10+(str[6]-'0');
day=(str[8]-'0')*10+(str[9]-'0');
if(month==1 || month==3 || month==5 || month==7
|| month==8 || month==10 || month==12){
if(day >=1 && day <=31){
day += 2;
if(day > 31){
month += 1;
day = 1;
}
if(month > 12){
year += 1;
month = 1;
}
}else{
flag=0;
cout<
}
}
else if(month==4 || month==6 || month==9 || month==11){
if(day >=1 && day <=30){
day += 2;
if(day > 30){
month += 1;
day = 1;
}
if(month > 12){
year += 1;
month = 1;
}
}else{
flag=0;
cout<
}
}
else if(month == 2){
if((year%4==0 && year%100!=0) || (year%400==0)){
//如果为闰年
if(day >=1 && day <=29){
day += 2;
if(day > 29){
month += 1;
day = 1;
}
if(month > 12){
year += 1;
month = 1;
}
}else{
flag=0;
cout<
}
}
else{
if(day >=1 && day <=28){
day += 2;
if(day > 28){
month += 1;
day = 1;
}
if(month > 12){
year += 1;
month = 1;
}
}else{
flag=0;
cout<
}
}
}
else{
cout<
}
}
if(flag==1){
cout<
}
}
return 0;
}
import java.util.Scanner;
public class CalculateTheDayAfterTomorrow {
public static boolean checkNum(char c) {
// 判断当前字符是否为数字
if (c >= '0' && c <= '9')
return true;
return false;
}
public static boolean checkString(String str) {
// 判断字符串是否为指定的日期格式:yyyy-mm-dd
if (checkNum(str.charAt(0)) && checkNum(str.charAt(1))
&& checkNum(str.charAt(2)) && checkNum(str.charAt(3))
&& (str.charAt(4) == '-') && checkNum(str.charAt(5))
&& checkNum(str.charAt(6)) && (str.charAt(7) == '-')
&& checkNum(str.charAt(8)) && checkNum(str.charAt(9)))
return true;
return false;
}
public static void main(String args[]) {
String str;
int year = 0;
int month = 0;
int day = 0;
Scanner scanner = new Scanner(System.in);
while ((str = scanner.nextLine()) != null) {
int flag = 1;
if (!checkString(str)) {
flag = 0;
System.out.println("您输入的日期格式不符合要求" + "\n");
} else {
// 计算年月日
year = (str.charAt(0) - '0') * 1000 + (str.charAt(1) - '0')
* 100 + (str.charAt(2) - '0') * 10
+ (str.charAt(3) - '0');
month = (str.charAt(5) - '0') * 10 + (str.charAt(6) - '0');
day = (str.charAt(8) - '0') * 10 + (str.charAt(9) - '0');
// 每个月的天数不一样,分类讨论
if (month == 1 || month == 3 || month == 5 || month == 7
|| month == 8 || month == 10 || month == 12) {
if (day >= 1 && day <= 31) {
day += 2;
if (day > 31) { // 已经跨月了
month += 1;
day -= 31;
}
if (month > 12) { // 后两天跨年了
year += 1;
month = 1;
}
} else {
flag = 0;
System.out.println("您输入的日期不存在" + "\n");
}
} else if (month == 4 || month == 6 || month == 9
|| month == 11) {
if (day >= 1 && day <= 30) {
day += 2;
if (day > 30) {
month += 1;
day -= 30;
}
if (month > 12) {
year += 1;
month = 1;
}
} else {
flag = 0;
System.out.println("您输入的日期不存在" + "\n");
}
} else if (month == 2) {
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
// 如果为闰年
if (day >= 1 && day <= 29) {
day += 2;
if (day > 29) {
month += 1;
day -= 29;
}
if (month > 12) {
year += 1;
month = 1;
}
} else {
flag = 0;
System.out.println("您输入的日期不存在" + "\n");
}
} else {// 平年
if (day >= 1 && day <= 28) {
day += 2;
if (day > 28) {
month += 1;
day -= 28;
}
if (month > 12) {
year += 1;
month = 1;
}
} else {
flag = 0;
System.out.println("您输入的日期不存在" + "\n");
}
}
} else {
flag = 0;
System.out.println("您输入的月份不存在" + "\n");
}
}
if (flag == 1) { // 通过flag标志输入的日期是否合法
System.out.println("后天的日期为: " + year + "年" + month + "月" + day
+ "日" + "\n");
}
}
}
}
标签:
java推算日期后天_分别用C++和Java写的计算后天的日期code相关推荐
- java护照号码校验_学无止境之小白学java……第001天
学习主题:预科阶段 对应视频: http://www.itbaizhan.cn/course/id/18.html 对应作业: 1. 为什么需要学编程,什么样的人可以做程序员? 编程是现实逻辑的表达, ...
- java中算两个时间内的秒数_java – Joda Time – 计算两个日期之间的秒数会引发异常....
我使用以下代码来计算两个日期之间的秒数差异: long secondsBetween = (Seconds.secondsBetween(new LocalDate("1901-01-01& ...
- java青蛙过河打字_趣味算法——青蛙过河(JAVA)
青蛙过河是一个非常有趣的智力游戏,其大意如下: 一条河之间有若干个石块间隔,有两队青蛙在过河,每队有3只青蛙,这些青蛙只能向前移动,不能向后移动,且一次只能有一只青蛙向前移动.在移动过程中,青蛙可以向 ...
- java rhino js类_让Rhino JS看Java类
我正在玩 Rhino,我已经成功使用了stdlib中的Java类,但没有使用我编译的Java代码. 例如,这工作正常: print(new java.util.Date()); 但是使用NanoHTT ...
- java azure blob 查询_快速入门:适用于 Java 的 Azure Blob 存储客户端库 v8 | Microsoft Docs...
您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn. 快速入门:使用 Jav ...
- java底层原理书籍_阿里面试题:Java中this和super关键字的底层实现原理
知道的越多,不知道的就越多,业余的像一棵小草! 编辑:业余草 来源:https://www.xttblog.com/?p=5028 B 站:业余草 最近一个粉丝加我说,接到了阿里的面试,问问我阿里会面 ...
- java 优秀源码_想要快速进阶Java架构师?这份超强(长)学习计划单 请签收!...
优秀工程师的成长之路就是一条不断打怪升级之路的"修仙之路"! 而Java程序员一向比别人更难,如果说大家都在修仙的话,java程序员简直神似"剑修",入行枯燥精 ...
- java编译器jdk版本_以编程方式确定Java类的JDK编译版本
java编译器jdk版本 当需要确定使用哪个JDK版本来编译特定的Java .class文件时, 通常使用的方法是使用javap并在javap输出中查找列出的"主要版本". 我在我 ...
- java 并发编程多线程_多线程(一)java并发编程基础知识
线程的应用 如何应用多线程 在 Java 中,有多种方式来实现多线程.继承 Thread 类.实现 Runnable 接口.使用 ExecutorService.Callable.Future 实现带 ...
- java引用公共类_使用键引用从Java公共类获取值 - java
我们有一个Java公共类, public class Test { public class ob1 { public static final String test = "T1T1&qu ...
最新文章
- Roundgod and Milk Tea 贪心
- EPOLLOUT 事件的意义 以及 处理示例
- Pytorch install
- C++类的使用(五)—— 多态
- jQuery 结构分析
- 计算机进位法,计算机基础知识--进位计数制.docx
- Python语法报错相关语句
- 凯立德地图导航2020年最新版车载_高精度地图会把自动驾驶带跑偏吗?
- JS向NPAPI传递参数,并返回结果
- 【yolov3详解】一文让你读懂yolov3目标检测原理
- 目标跟踪(三)——多目标跟踪
- 3.0.0 alpha 重磅发布!九大新功能、全新 UI 解锁调度系统新能力
- 随机生成名字的Android页面
- 广X斜Y-1顶岗纪实
- Day20(lambda、stream、微服务、大数据、nginx)
- [转贴]民国记者有多牛:揭黑损人骂街是常事
- 【2-SAT初学+模板题讲解】POJ3683 Priest John's Busiest Day
- C# 7.0 SPANS
- 51单片机与LCD1602接口电路与程序
- 播音提示器软件设计与实现
热门文章
- python学习记录 day1
- 笔记本重装系统(Win10)
- ApiPost 前后端协作开发神器 Postman+Swagger+Mock+Websocket的完美替代品
- python跑神经网络_程序员深夜用Python跑神经网络,只为用中二动作关掉台灯!
- MN梦奈宝塔主机系统V1.5版本发布
- 3D游戏设计作业(三)
- [9]Windows内核情景分析 --- DPC
- 通过查看Qt助手(QtAssistant)了解并使用自己需要Qt库
- 【Beta】Scrum Meeting 4
- go语言数据类型之切片slice