A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 浅色寂语66 中级黑马   /  2016-7-31 15:52  /  2279 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.分析以下需求,并用代码实现:
//(1)通过键盘录入日期字符串,格式(2015-10-20)
//(2)输出该日期是星期几及这一年的第几天
//(3)如输入:2015-10-20,输出"2015年-10月-20日 是 星期二,是  2015年的第 293 天"*/

12 个回复

倒序浏览
大神帮下忙,在线等
回复 使用道具 举报
还没学到
回复 使用道具 举报

好吧!!1
回复 使用道具 举报
我也不会
回复 使用道具 举报

写出来了吗?求看
回复 使用道具 举报

没有啊  学的比较懵
回复 使用道具 举报
刚来几天不会,基础不是讲过吗!!   API里面的源代码
回复 使用道具 举报
不懂怎么创建键盘输入...2015-10-20
回复 使用道具 举报
本帖最后由 itismyhao 于 2016-8-1 01:07 编辑

学StringBuffer了吗
刚刚自己搞了半天,写了用好几种方法.
挑个简单的给你,具体里面的细节例如判断月份什么的合法不合法之类的,你自己搞吧
也算是取巧了.取巧的办法就很多很多了.
其实本是想用StringBuffer纯粹的逻辑判断去解决,但是学艺不精,按照我的想法是没问题,但是编译给我说是内存出错.
[AppleScript] 纯文本查看 复制代码
import java.util.Scanner;
class Demo
{
	public static void judge(String s) {
		String[] str=s.split("-");
		int year=Integer.parseInt(str[0]);//年
		int month=Integer.parseInt(str[1]);//月
		int day=Integer.parseInt(str[2]);//日
		int num=month*30+day;//懒得算了,直接以每月三十天为准
		String week="";
		switch(num%7) {
		case 1:
			week="星期一";
			break;
		case 2:
			week="星期二";
			break;
		case 3:
			week="星期三";
			break;
		case 4:
			week="星期四";
			break;
		case 5:
			week="星期五";
			break;
		case 6:
			week="星期六";
			break;
		case 0:
			week="星期日";
			break;
		
		}
		System.out.println(str[0]+"年-"+str[1]+"月-"+str[2]+"日是"+week+",是"+str[0]+"年的第"+num+"天");		
	}
	public static void main(String[] args) 
	{
		Scanner sc=new Scanner(System.in);
		System.out.println("日期格式(2015-10-20)");
		String date=sc.nextLine();
		judge(date);
	}
}

回复 使用道具 举报
提示一下吧,1900年的第一天刚好是星期一,可以通过计算1900年到该日期的总天数,然后对7取于什么的就可以得到是星期几,然后第几天那个可以通过下面代码,记住不要加 break;
int sum = 0
switch(month - 1){
     case 11:
         sum += 30;
      case 10:
          sum += 31;
      ...
      ...
      case 1:
           sum += 31;
}
因为很困了,就不帮你敲代码了,自己思考一下吧
回复 使用道具 举报
额,由于开学没多久,后面那些API我也还没看,只能用前面的知识回答了
回复 使用道具 举报
package cn.ithihei.java;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

public class Demo03 {

         public static void main(String[] args) throws Exception {
                /* 1.分析以下需求,并用代码实现:
                        (1)通过键盘录入日期字符串,格式(2015-10-20)
                        (2)输出该日期是星期几及这一年的第几天
                        (3)如输入:2015-10-20,输出"2015年-10月-20日 是 星期二,是  2015年的第 293 天"*/
                 
                 Scanner sc = new Scanner(System.in);
                 System.out.println("兄弟,请输入日期,格式(2015-10-20)");
                 String str = sc.nextLine();
                 readDate(str);
        }

        private static void readDate(String str) throws Exception {
                // Date 精确的时间   Calendar -->是星期几,一年中的第几天
            // sdf.format(Date date) --->String    sdf.parse(String str)  --->Date
           SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  // 试试小写
           Date needDate = sdf.parse(str);   
           //需要转化的格式
           SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年-MM月-dd日");
           //转化过后的格式
           String format = sdf2.format(needDate);
           Calendar c = Calendar.getInstance();
           //告诉Java 我们要操作的是哪一天
           c.setTime(needDate);
           int week = c.get(Calendar.DAY_OF_WEEK);  // ---> 1- 7  1 是星期日   7是星期六
           int day = c.get(Calendar.DAY_OF_YEAR);   // 一年中的第几天
           int year = c.get(Calendar.YEAR);
           // 通过Calendar 获得的星期转化我们真正需要的日期
         
          // 如输入:2015-10-20,输出"2015年-10月-20日 是 星期二,是  2015年的第 293 天"*/
           System.out.println(format +"是"+ readWeek(week)+ ",是"+year+"年的第"+day+"天" );
          
        }

        private static String readWeek(int week) {
                String [] strArr = {  "","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
                return strArr[week];
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马