java源码-输入年月日信息问题?完全不知道啊

问题描述

输入年月日信息问题?完全不知道啊

这个题目怎么实现啊,一点点的思路都没有,不知道如何去计算,谁能给我个java源码啊????????????????????????

解决方案

Calendar a = Calendar.getInstance();
a.set(2016, 0, 1);
System.out.println(a.get(a.DAY_OF_YEAR)); //当前年月日在当前年的第几天
a.set(年,月-1,日).

解决方案二:

 #include <stdio.h>
int yd;//定义全局变量,yd表示某一年的总天数
int aa(int x) //该函数用来判断是否是闰年
{if(((x%4==0)&&(x%100!=0))||(x%400==0)) yd=366;} 

int run2(int x,int d[3])//功能函数
{int i,n=d[2],a[12]={0,31,28,31,30,31,30,31,31,30,31,30};//n表示总天数?a[1]-a[11]分别代表前11
个月的天数
if(yd==366) a[2]=29;//如果该年是闰年则2月设置为29天?否则为28天。
for(i=0;i<=d[1]-1;i++)
n=n+a[i];
printf("该日是%d年的第%d天。n",d[0],n);
return(n);
} 

main()
{
int md,data[3];//md表示某个月的总天数?data[0]-data[2]分别储存年、月、日
/*开始输入年份?如果年份小于等于0?则要求重新输入*/
printf("请输入年份?n");
scanf("%d",&data[0]);
while(data[0]<=0)
{printf("输入的年份应大于0?请重新输入:n");scanf("%d",&data[0]);}
aa(data[0]);
/*开始输入月份?如果月份小于1或大于12?则要求重新输入*/
printf("请输入月份?n");
scanf("%d",&data[1]);
while(data[1]<1||data[1]>12)
{printf("输入的月份应在1-12之间?请重新输入:n");scanf("%d",&data[1]);}
/*根据输入的月份判断该月的总天数*/
switch(data[1])
{case 1:md=31;break;
case 2:if(yd==366) md=29;else md=28;break;
case 3:md=31;break;
case 4:md=30;break;
case 5:md=31;break;
case 6:md=30;break;
case 7:md=31;break;
case 8:md=31;break;
case 9:md=30;break;
case 10:md=31;break;
case 11:md=30;break;
case 12:md=31;
}
/*开始输入日?如果输入值大于该月的总天数或小于1?则要求重新输入*/
printf("请输入日?n");
scanf("%d",&data[2]);
while(data[2]>md||data[2]<1)
{printf("输入值应小于等于该月的总天数或大于等于1?请重新输入:n");scanf("%d",&data[2]);}
printf("您输入的是%d年%d月%d日?",data[0],data[1],data[2]); //data[0],data[1],data[2]分别代表
年、月、日
run2(data[0],data);//将输入的年份和数组首地址传给函数
} 

二、输入某年的年份和天数?计算出该天数是这一年的几月几日?如输入2012和
60?则2012年的第60天是2012年2月29日。
#include <stdio.h>
int yd;//定义全局变量,yd表示某一年的总天数
int aa(int x)//该函数用来判断是否是闰年
{if(((x%4==0)&&(x%100!=0))||(x%400==0)) yd=366;else yd=365;}//如果是闰年则全年有366天  

int run(int x,int n) //功能函数
{int i,m,d,s=0,a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};/m表示月份?d表示日?i用来遍历?
s用来计算月份的总和?a[1]-a[12]分别代表前12个月的天数
printf("%d年的第%d天是",x,n);
if(yd==366) a[2]=29;//如果该年是闰年则2月设置为29天?否则为28天。
for(i=0;i<12;i++)
{s=s+a[i];
if(n>s&&n<=s+a[i+1])
{m=i+1;d=n-s;}
}
printf("%d月%d日。n",m,d);
} 

main()
{
int num,year;//num表示天数?year表示年份
/*开始输入年份?如果年份小于等于0?则要求重新输入*/
printf("请输入年份?n");
scanf("%d",&year);
while(year<=0)
{printf("输入的年份应大于0?请重新输入:n");scanf("%d",&year);} 

aa(year);
/*开始输入天数?如果天数小于等于0或大于该年的总天数?则要求重新输入*/
printf("请输入天数?n");
scanf("%d",&num);
while(num>yd||num<=0)
{printf("输入值应小于一年的总天数?请重新输入:n");scanf("%d",&num);}
run(year,num);
}

解决方案三:

给你源码也没啥用。给你个思路吧,根据输入月做循环,1、3、5、7、8、10、12 全局变量加31 ,利用年判断2月天数,也就是判断平润年,其他月加30,再加输入日天数

解决方案四:

用Calendar来算就好了

     public static void main(String[] args) {

            int year = 2016;
            int month = 3;
            int date = 12;

            Calendar cal = Calendar.getInstance();
            cal.set(year, month -1, date);
            System.out.println(cal.get(Calendar.DAY_OF_YEAR));
        }

解决方案五:

方法很多,上面日历是最常见的一种,也可用date实现。另外确定你的答案没错?明明是第303天。

public static void main(String[] args) throws ParseException {
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("Gyyyy年中第D天");
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    Scanner scanner = new Scanner(System.in);
    while (scanner.hasNextLine()) {
        String date = scanner.next();
        Date dateInput = format.parse(date);
        System.out.println(simpleDateFormat.format(dateInput));
    }
}

解决方案六:

方法很多,上面几位已经给出了具体代码了

解决方案七:

package com.itheima;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class Test9 {
private static Scanner input;

public static void main(String args[]){

    System.out.print("请输入一个正确的日期(格式如:2016-02-27): ");
    long year = 0;
    int month = 0;
    int day = 0;
    int countDay;

    input = new Scanner(System.in);
    String str = input.nextLine();

    /* substring() 方法用于提取字符串中介于两个指定下标之间的字符。
     * stringObject.substring(start,stop)
     * 返回一个新的字符串,该字符串值包含 stringObject 的一个子字符串,
     * 其内容是从 start 处到 stop-1 处的所有字符,其长度为 stop 减 start,
     * stop省略,如果省略该参数,那么返回的子串会一直到字符串的结尾。*/
    year = Integer.valueOf(str.substring(0,4));
    //System.out.println(year);
    month = Integer.valueOf(str.substring(5, 7));
    //System.out.println(month);
    day = Integer.valueOf(str.substring(8));
    //System.out.println(day);
    countDay = Day(year, month, day);
    System.out.print("今天是"
                        + year + "年"
                        + month + "月"
                        + day + "日,");
    System.out.println("是一年中的第" + countDay + "天");

}

//判断是否是闰年
public static boolean isLeapYear(long year){
    boolean flag = false;
    if((year % 4 == 0) & (year % 100 != 0) | (year % 400 == 0)){
        flag=true;
    }
    return flag;
}

//计算这一天是一年中的第几天
public static int Day(long year, int month, int day){
    int daySum = 0;
    for(int i=1; i<month; i++){
        switch(i){
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            daySum = daySum + 31;
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            daySum = daySum + 30;
            break;
        case 2:
            if(isLeapYear(year)){
                daySum = daySum + 29;
            }else{
                daySum = daySum + 28;
            }
        }
    }
    return daySum+day;
}

}

时间: 2024-11-02 07:13:00

java源码-输入年月日信息问题?完全不知道啊的相关文章

java源码-这个题目来看一下,不知道怎么选

问题描述 这个题目来看一下,不知道怎么选 求指导???????????????????????????????????????????????????????????? 解决方案 选D,你是在考试吗现在?这样会不会不太好!

myeclipse-怎样在自己电脑上运行java源码

问题描述 怎样在自己电脑上运行java源码 本人小白一枚,以前用myeclipse做过网站,今天在这里下载了网络白板的java源码,但是用myeclipse导入之后为什么运行不了啊,请问应该怎样能让java'源码在自己电脑上跑起来啊 解决方案 例如d盘下,CaiShu.java 打开开始-运行-输入cmd回车打开命令行窗口 cd d: javac CaiShu.java 将java文件编译为字节码文件 然后用 java Caishu 运行程序. 以上操作是在环境变量配置正确的前提下进行

解密随机数生成器(二)——从java源码看线性同余算法

Random Java中的Random类生成的是伪随机数,使用的是48-bit的种子,然后调用一个linear congruential formula线性同余方程(Donald Knuth的编程艺术的3.2.1节) 如果两个Random实例使用相同的种子,并且调用同样的函数,那么生成的sequence是相同的 也可以调用Math.random()生成随机数 Random实例是线程安全的,但是并发使用Random实例会影响效率,可以考虑使用java.util.concurrent.ThreadL

android apk反编译到java源码的实现方法_Android

Android由于其代码是放在dalvik虚拟机上的托管代码,所以能够很容易的将其反编译为我们可以识别的代码. 之前我写过一篇文章反编译Android的apk包到smali文件 然后再重新编译签名后打包实现篡改apk的功能. 最近又有一种新的方法来实现直接从Android apk包里的classes.dex文件,把dex码反编译到java的.class二进制码,然后从.class二进制码反编译到java源码想必就不用我来多说了吧. 首先我们需要的工具是dex2jar和jd-gui 其中第一个工具

android apk反编译到java源码的实现方法

Android由于其代码是放在dalvik虚拟机上的托管代码,所以能够很容易的将其反编译为我们可以识别的代码. 之前我写过一篇文章反编译Android的apk包到smali文件 然后再重新编译签名后打包实现篡改apk的功能. 最近又有一种新的方法来实现直接从Android apk包里的classes.dex文件,把dex码反编译到java的.class二进制码,然后从.class二进制码反编译到java源码想必就不用我来多说了吧. 首先我们需要的工具是dex2jar和jd-gui 其中第一个工具

Android 用Time和Calendar获取系统当前时间源码分享(年月日时分秒周几)

概述 用Time和Calendar获取系统当前时间(年月日时分秒周几) 效果图 源码: import android.app.Activity; import android.os.Bundle; import android.text.format.Time; import android.view.View; import android.widget.RelativeLayout; import android.widget.TextView; import java.util.Calen

java源码阅读方法以及经验

问题描述 java源码阅读方法以及经验 如何更好的阅读java源码,更注重阅读哪些包里面的源码,当然连好的阅读源码的工具也说明一下更好了 解决方案 我在这里假设你在问怎么阅读jdk的源码,java源码这个名字有点奇怪. 你可以build 一个fast debug版本,然后使用debugger去调试你的程序,这样对程序是怎么调用的有很直观的视图. 其次,可以看看jdk里面的regression tests,里面有很多例子. 其次,openjdk提供了netbean的jdk project,你可以很

关于生成java源码的问题

问题描述 最近要做一个通过java源码生成另一套java源码,如根据以下代码:publicclasshelloword{publicStringtest="";publicvoidtest(){/*语句...*/}publicStringtest(){/*语句...*/returnresult;}} 生成如下代码:publicclasshelloword{publicStringtest="";publicvoidtest(){}publicStringtest()

对象-java源码中一个抽象类初始化方法中包含一个super(),该怎么理解

问题描述 java源码中一个抽象类初始化方法中包含一个super(),该怎么理解 package org.apache.http.params; import java.util.Set; /** * Abstract base class for parameter collections. * Type specific setters and getters are mapped to the abstract, * generic getters and setters. * * @si