黑马程序员技术交流社区

标题: JAVAEE基础班习题求解答 [打印本页]

作者: 浅色寂语66    时间: 2016-7-31 15:52
标题: JAVAEE基础班习题求解答
1.分析以下需求,并用代码实现:
//(1)通过键盘录入日期字符串,格式(2015-10-20)
//(2)输出该日期是星期几及这一年的第几天
//(3)如输入:2015-10-20,输出"2015年-10月-20日 是 星期二,是  2015年的第 293 天"*/
作者: 浅色寂语66    时间: 2016-7-31 15:53
大神帮下忙,在线等
作者: nblity007    时间: 2016-7-31 16:45
还没学到
作者: 浅色寂语66    时间: 2016-7-31 17:18
nblity007 发表于 2016-7-31 16:45
还没学到

好吧!!1
作者: 花陌相惜    时间: 2016-7-31 18:03
我也不会

作者: 浅色寂语66    时间: 2016-7-31 20:59
花陌相惜 发表于 2016-7-31 18:03
我也不会

写出来了吗?求看
作者: 花陌相惜    时间: 2016-7-31 21:21
浅色寂语66 发表于 2016-7-31 20:59
写出来了吗?求看

没有啊  学的比较懵
作者: ゛Babyゝ    时间: 2016-7-31 22:09
刚来几天不会,基础不是讲过吗!!   API里面的源代码
作者: 菜鸟世界    时间: 2016-7-31 22:33
不懂怎么创建键盘输入...2015-10-20
作者: itismyhao    时间: 2016-7-31 23:41
本帖最后由 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);
        }
}


作者: 13411939415    时间: 2016-7-31 23:44
提示一下吧,1900年的第一天刚好是星期一,可以通过计算1900年到该日期的总天数,然后对7取于什么的就可以得到是星期几,然后第几天那个可以通过下面代码,记住不要加 break;
int sum = 0
switch(month - 1){
     case 11:
         sum += 30;
      case 10:
          sum += 31;
      ...
      ...
      case 1:
           sum += 31;
}
因为很困了,就不帮你敲代码了,自己思考一下吧
作者: 13411939415    时间: 2016-7-31 23:47
额,由于开学没多久,后面那些API我也还没看,只能用前面的知识回答了
作者: 浅色寂语66    时间: 2016-8-1 22:58
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];
        }
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2