bug_safe 2021-11-02 15:38 采纳率: 66.7%
浏览 48
已结题

一道Java题,要求输出与题一致

判断输入的值是否为世界完全对称日,并且输出它的前一个世界完全对称日和后一个世界完全对称日

  • 写回答

3条回答 默认 最新

  • iilmx 2021-11-02 16:29
    关注
    
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.Scanner;
    
    /**
     * 世界完全对称日是指公历纪年日期中数字左右完全对称的日期
     * 如2010年1月2日(20100102).2011年11月2日(20111102)2020年2月2日
     * (20200202)等
     * 请用Java编写出计算世界完全对称日的程序
     * 要求输入一个日期(yyyy-mm-dd),判断当前是不是世界完全对称日,并计算距
     * 离这个日期最近的上—个世界完全对称日和最近的下一个世界完全对称日的日期
     * 例如输入:2021-11-02
     * 则输出:2021-11-02不是世界完全对称目距离2021-11-02最近的下一个世界对
     * 称日是2021-12-02,距离2021-11-02最近的上一个世界对称日是2020-02-02
     */
    public class Main {
        public static void main(String[] args) {
            SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
            Scanner s = new Scanner(System.in);
            String strDate = s.nextLine();
            StringBuffer sb = new StringBuffer(strDate);
            sb.deleteCharAt(sb.indexOf("-")).deleteCharAt(sb.indexOf("-"));
            if(sb.toString().equals(sb.reverse().toString())){
                System.out.println(strDate + "是世界完全对称日!");
            }else{
                String lastStr = "";
                String nextStr = "";
                String str = "";
                boolean lastFlag = true;
                boolean nextFlag = true;
                int day = 1;
                while(lastFlag || nextFlag){
                    //  下一个世界对称日
                    if(nextFlag){
                        Calendar calendar = Calendar.getInstance();
                        calendar.add(Calendar.DAY_OF_YEAR, day);
                        str = df.format(new Date(calendar.getTime().getTime()));
                        sb = new StringBuffer(str);
                        sb.deleteCharAt(sb.indexOf("-")).deleteCharAt(sb.indexOf("-"));
                        if(sb.toString().equals(sb.reverse().toString())){
                            nextStr = str;
                            nextFlag = false;
                        }
                    }
                    //  上一个世界对称日
                    if(lastFlag){
                        Calendar calendar = Calendar.getInstance();
                        calendar.add(Calendar.DAY_OF_YEAR, -day);
                        str = df.format(new Date(calendar.getTime().getTime()));
                        sb = new StringBuffer(str);
                        sb.deleteCharAt(sb.indexOf("-")).deleteCharAt(sb.indexOf("-"));
                        if(sb.toString().equals(sb.reverse().toString())){
                            lastStr = str;
                            lastFlag = false;
                        }
                    }
    
    
                    ++day;
                }
                System.out.println(strDate + "不是世界完全对称目距离"+
                        strDate+",最近的下一个世界对称日是"+ nextStr +",距离"+
                        strDate+"最近的上一个世界对称日是"+lastStr);
            }
    
        }
    }
    
    

    如果对你有帮助,请采纳一下哈!!!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 11月10日
  • 已采纳回答 11月2日
  • 修改了问题 11月2日
  • 修改了问题 11月2日
  • 展开全部

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么