2 luanpaixie262 luanpaixie262 于 2016.03.15 16:42 提问

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

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

7个回答

a0984
a0984   2016.03.15 17:06

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

lx624909677
lx624909677   Ds   Rxr 2016.03.15 16:46
 #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); 
}
ECNU_DF
ECNU_DF   2016.03.15 16:48

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

daidaineteasy
daidaineteasy   Ds   Rxr 2016.03.15 17:19

用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));
        }
luochoudan
luochoudan   Ds   Rxr 2016.03.15 17:41

方法很多,上面日历是最常见的一种,也可用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));
    }
}
u013772876
u013772876   2016.03.15 18:55

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

sihuan1314
sihuan1314   2016.03.16 12:36

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;
}

}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!