java 一年的第一周从2月1号开始,获取今年的第三周的星期一,以及去年第三周的星期一 对应的日期

文章 3年前 (2021) admin
0

Q1:java如何得到指定日期月的第几周?按每年的1号为第一周开始算。

你需要思考第一个问题,直接上日历课就可以了!问题1:当周与:年末年初的周重叠时,得到第二年第一周的数字。这次其实很简单,因为月份绝对不一样,对吧?直接判断月份就行了。第一个月肯定不会等第二个月。同时判断周是否为1。如果同时满足条件,就加52!一个分割线,参照日历看,分数正好是:

Q2:Java中怎么获取一个月的第几周的所有日期啊?比如说我要获取一月的第一周的所有天数的日期是多少要怎么写

导入Java。乌提尔。日历;导入Java。乌提尔。区域设置;公开课WeekCalendar { private int week私人国际年;私人国际月;公共周日历(整年、整月、整周){这。年份=年份;这个。月=月-1;//月份从0开始,所以减去1 this . week=week } private static final int size=7;公共静态void main(String[]args){ WeekCalendar weekCal=new WeekCalendar(2011,1,2);int[]WeekDays=WeekCal。GetWeekDays();for(int I=0;我工作日。长度;i ){系统.输出.打印(工作日[i]",");} } public int[]GetWeekdays(){ int[]Weekdays=new int[size];日历日历=Calendar.getInstance(Locale .中国);日历。设置(日历。周_月_日,周);for(int i=日历SUNDAYi=日历。星期六;I){ 0工作日[i-1]=日历。获取(日历。月日);日历。添加(日历。月_日,1);}返回工作日;}} - 3, 4, 5, 6, 7, 8, 9,

Q3:编写一个java程序,将文本文件a.txt中的内容加密后写入文本文件b.txt,加密算法自行设定(如异或算法)

病毒历史电脑病毒的起源(节录自牛顿杂志)电脑病毒的历史:磁蕊大战电脑病毒并非是最近才出现的新产物, 事实上, 早在一九四九年, 距离第一部商用电脑的出现仍有好几年时, 电脑的先驱者约翰.范纽曼(John Von Neumann)在他所提出的一篇论文 [复杂自动装置的理论及组织的进行] , 即已把病毒程式的蓝图勾勒出来, 当时, 绝大部份的电脑专家都无法想像这种会自我繁植的程式是可能的, 可是少数几个科学家默默的研究范纽曼的所提出的概念, 直到十年之后, 在美国电话电报公司(AT&T;) 的贝尔(Bell)实验室中, 这些概念在一种很奇怪的电子游戏中成形了, 这种电子游戏叫做 [磁蕊大战] (core war)。磁蕊大战是当时贝尔实验室中三个年轻程式人员在工馀想出来的, 他们是道格拉斯麦耀莱(H.Douglas McIlroy), 维特.维索斯基(Victor Vysottsky)以及罗伯.莫里斯(Robert T. Morris), 当时三人年纪都只有二十多岁.附注: Robert T. Morris 就是后来写了一个 Worm, 把 Internet 搞的天翻地覆的那个 Robert T. Morris Jr. 的爸爸, 当时大 Morris 刚好是负责 Arpanet网路安全 .电脑病毒的老祖宗:磁蕊大战的玩法如下:两方各写一套程式, 输入同一部电脑中, 这两套程式在电脑?记忆系统内互相追杀,有时它们会放下一些关卡,有时会停下来修理(重新写)被对方破坏的几行指令 ;当它被困时,也可以把自己复制一次,逃离险境,因为它们都在电脑的记忆磁蕊中游走,因此得到了磁蕊大战之名.这个游戏的特点,在於双方的程式进入电脑之后,玩游戏的人只能看著萤幕上显示的战况,而不能做任何更改,一直到某一方的程式被另一方的程式完全 [吃掉] 为止.磁蕊大战是个笼统的名称,事实上还可细分成好几种,麦耀莱所写的程式叫 [达尔文]这包含了 [物竞天择,适者生存] 的意思 . 它的游戏规则跟以上所描述的最接近,双方以组合语言(Assembly Language)各写一套程式,叫有机体(organism),这两个有机体在电脑里争斗不休,直到一方把另一方杀掉而取代之,便算分出胜负. 在比赛时 Morris 经常匠心独具,击败对手.另外有个叫爬行者程式(Creeper)的,每一次把它读出时,它便自己复制一个副本.此外,它也会从一部电脑[爬]到另一部有连线的电脑.很快地电脑中原有资料便被这些爬行者挤掉了.爬行者的微一生存目地是繁殖.为了对付[爬行者],有人便写出了[收割者](Reaper).它的唯一生存目的便是找到爬行者,把它们毁灭掉.当所有爬行者都被收割掉之后,收割者便执行程式中最后一项指令:毁灭自己,从电脑中消失.[侏儒](Dwarf)并没有达尔文等程式聪明.却可是个极端危险人物.它在记忆系统中迈进,每到第五个[地址](address)便把那里所储存的东西变为零,这会使的原本的程式停摆.最奇特的就是一个叫[印普](Imp)的战争程式了,它只有一行指令,那就是MOV 01MOV是[MOVE]的代表,即移动的意思 .它把身处的地址中所载的[0]写(移)到下一个地址中,当印普展开行动之后,电脑中原有的每一行指令都被改为[MOV 01].换句话说,萤光幕上留下一大堆[MOV 01].[双子星](Germini)也是个有趣的家伙.它的作用只有一个:把自己复制,送到下一百个地址后,便抛弃掉[正本].从双子星衍生出一系列的程式.[牺牲者](Juggeraut)把自己复制后送到下十个地址之后;而[大雪人](Bigfoot)则把正本和复制品之间的地址定为某一个大质数.想抓到大雪人可是非常困难的.此外,还有全录(Xerox)柏路阿图研究中心的约翰.索殊(John F.Shoch)所写的[蠕虫](Worm),它的目的是要控制侵入的电脑.电脑病毒的出现在那些日子里,电脑都没有连线,而是互相独立的,因此并不会出现小莫礼士所引起的病毒瘟疫.如果有某部电脑受到[感染],失去控制,工作人员只需把它关掉便可.但是当电脑连线逐渐成为社会结构的一部份之后,一个或自我复制的病毒程式便很可能带来?穷的祸害了.因此长久一来,懂的玩[磁蕊大战]游戏的电脑工作者都严守一项不成文的规定: 不对普罗大众公开这些战争程式的内容.一九八三年,这项规定被打破了.科恩.汤普逊(Ken Thompson)是当年一项杰出电脑讲得奖人.在颁奖典礼上,他作了一个演讲,不但公开地证实了电脑病毒的存在,而且还告诉所有听众怎样去写自己的病毒程式.他的同行全都吓坏了,然而这个秘密已经流传出去了.一九八四年,情况愈复杂了.这一年,[科学美国人]月刊(Scientific American)的专栏作家杜特尼(A. K. Dewdney)在五月号写了第一篇讨论[磁蕊大战]的文章,并且只要寄上两块美金,任何读者都可以收到它所写得有关写程式的纲领,在自己家中的电脑中开辟战场.[病毒]一词的正式出现在一九八五年三月份的[科学美国人]里,杜特尼再次讨论[磁蕊大战]-----和病毒.在文章的开头他便说:[当去年五月有关[磁蕊大战]的文章印出来时,我并没有想过我所谈论的是那么严重的题目]文中并第一次提到[病毒]这个名称.他提到说,义大利的罗勃吐.些鲁帝(Roberto Cerruti)和马高.么鲁顾帝(Marco Morocutti)发明了一种破坏软体的方法.他们想用病毒,而不是蠕虫,来使得苹果二号电脑受感染.些鲁弟写了一封信给杜特尼,信内说:[马高想写一个像[病毒]一样的程式,可以从一部苹果电脑传染到另一部苹果电脑,使其受到感染.可是我们没法这样做,直到我想到,这病毒要先使磁碟受到感染,而电脑只是媒介.这样,病毒就可以从一片磁碟传染到另一片磁碟了.]病毒历史事例: 1975 年,美国科普作家约翰·布鲁勒尔 (John Brunner) 写了一本名为《震荡波骑士》(Shock Wave Rider) 的书,该书第一次描写了在信息社会中,计 算机作为正义和邪恶双方斗争的工具的故事,成为当年最佳畅销书之一。 1977 年夏天,托马斯·捷·瑞安 (Thomas.J.Ryan) 的科幻小说《P-1的春 天》(The Adolescence of P-1) 成为美国的畅销书,作者在这本书中描写了一 种可以在计算机中互相传染的病毒,病毒最后控制了 7,000 台计算机,造成了 一场灾难。 1983 年 11 月 3 日,弗雷德·科恩 (Fred Cohen) 博士研制出一种在运行过程中可以复制自身的破坏性程序,伦·艾德勒曼 (Len Adleman) 将它命名为计算机病毒 (computer viruses),并在每周一次的计算机安全讨论会上正式提出,8 小时后专家们在 VAX11/750 计算机系统上运行,第一个病毒实验成功,一周后又获准进行 5个实验的演示,从而在实验上验证了计算机病毒的存在。 1986 年初,在巴基斯坦的拉合尔 (Lahore),巴锡特 (Basit) 和阿姆杰德(Amjad) 两兄弟经营着一家 IBM-PC 机及其兼容机的小商店。他们编写了Pakistan 病毒,即 Brain。在一年内流传到了世界各地。 1988 年 3 月 2 日,一种苹果机的病毒发作,这天受感染的苹果机停止工作,只显示“向所有苹果电脑的使用者宣布和平的信息”。以庆祝苹果机生日。 1988 年 11 月 2 日,美国六千多台计算机被病毒感染,造成 Internet 不能正常运行。这是一次非常典型的计算机病毒入侵计算机网络的事件,迫使美国政府立即作出反应,国防部成立了计算机应急行动小组。这次事件中遭受攻击的包括 5 个计算机中心和 12 个地区结点,连接着政府、大学、研究所和拥有政府合同的50,000 台计算机。这次病毒事件,计算机系统直接经济损失达 9600 万美元。这个病毒程序设计者是罗伯特·莫里斯 (Robert T.Morris),当年 23 岁,是在康乃尔 (Cornell) 大学攻读学位的研究生。 罗伯特·莫里斯设计的病毒程序利用了系统存在的弱点。由于罗伯特·莫里斯成了入侵 ARPANET 网的最大的电子入侵者,而获准参加康乃尔大学的毕业设计,并获得哈佛大学 Aiken 中心超级用户的特权。他也因此被判3 年缓刑,罚款1 万美元,他还被命令进行 400 小时的新区服务。 注:在此文中,把蠕虫、我们常提的病毒定为病毒不同种类。 1988 年底,在我国的国家统计部门发现小球病毒。 --------------------------------------------------------------------------------在病毒的发展史上,病毒的出现是有规律的,一般情况下一种新的病毒技术出现后,病毒迅速发展,接着反病毒技术的发展会抑制其流传。操作系统进行升级时,病毒也会调整为新的方式,产生新的病毒技术。它可划分为:DOS引导阶段 1987年,计算机病毒主要是引导型病毒,具有代表性的是“小球”和“石头”病毒。当时得计算机硬件较少,功能简单,一般需要通过软盘启动后使用。引导型病毒利用软盘得启动原理工作,它们修改系统启动扇区,在计算机启动时首先取得控制权,减少系统内存,修改磁盘读写中断,影响系统工作效率,在系统存取磁盘时进行传播。1989年,引导型病毒发展为可以感染硬盘,典型的代表有”石头2”。DOS可执行阶段 1989年,可执行文件型病毒出现,它们利用DOS系统加载执行文件的机制工作,代表为”耶路撒冷”,”星期天”病毒,病毒代码在系统执行文件时取得控制权,修改DOS中断,在系统调用时进行传染,并将自己附加在可执行文件中,使文件长度增加。1990年,发展为复合型病毒,可感染COM和EXE文件。伴随,批次型阶段 1992年,伴随型病毒出现,它们利用DOS加载文件的优先顺序进行工作。具有代表性的是”金蝉”病毒,它感染EXE文件时生成一个和EXE同名的扩展名为COM伴随体;它感染COM文件时,改为原来的COM文件为同名的EXE文件,在产生一个原名的伴随体,文件扩展名为COM。这样,在DOS加载文件时,病毒就取得控制权。这类病毒的特点是不改变原来的文件内容,日期及属性,解除病毒时只要将其伴随体删除即可。在非DOS操作系统中,一些伴随型病毒利用操作系统的描述语言进行工作,具有典型代表的是”海盗旗”病毒,它在得到执行时,询问用户名称和口令,然后返回一个出错信息,将自身删除。批次型病毒是工作在DOS下的和”海盗旗”病毒类似的一类病毒。幽灵,多形阶段 1994年,随着汇编语言的发展,实现同一功能可以用不同的方式进行完成,这些方式的组合使一段看似随机的代码产生相同的运算结果。幽灵病毒就是利用这个特点,每感染一次就产生不同的代码。例如”一半”病毒就是产生一段有上亿种可能的解码运算程序,病毒体被隐藏在解码前的数据中,查解这类病毒就必须能对这段数据进行解码,加大了查毒的难度。多形型病毒是一种综合性病毒,它既能感染引导区又能感染程序区,多数具有解码算法,一种病毒往往要两段以上的子程序方能解除。生成器,变体机阶段 1995年,在汇编语言中,一些数据的运算放在不同的通用寄存器中,可运算出同样的结果,随机的插入一些空操作和无关指令,也不影响运算的结果,这样,一段解码算法就可以由生成器生成。当生成的是病毒时,这种复杂的称之为病毒生成器和变体机就产生了。具有典型代表的是”病毒制造机”VCL,它可以在瞬间制造出成千上万种不同的病毒,查解时就不能使用传统的特征识别法,需要在宏观上分析指令,解码后查解病毒。变体机就是增加解码复杂程度的指令生成机制。网络,蠕虫阶段 第一篇 第二篇 1995年,随着网络的普及,病毒开始利用网络进行传播,它们只是以上几代病毒的改进。在非DOS操作系统中,”蠕虫”是典型的代表,它不占用除内存以外的任何资源,不修改磁盘文件,利用网络功能搜索网络地址,将自身向下一地址进行传播,有时也在网络服务器和启动文件中存在。视窗阶段 1996年,随着Windows和Windows95的日益普及,利用Windows进行工作的病毒开始发展,它们修改(NE,PE)文件,典型的代表是DS。3873,这类病毒的急智更为复杂,它们利用保护模式和API调用接口工作,解除方法也比较复杂。宏病毒阶段 1996年,随着Windows Word功能的增强,使用Word宏语言也可以编制病毒,这种病毒使用类Basic语言,编写容易,感染Word文档文件。在Excel和AmiPro出现的相同工作机制的病毒也归为此类。由于Word文档格式没有公开,这类病毒查解比较困难。互连网阶段 1997年,随着因特网的发展,各种病毒也开始利用因特网进行传播,一些携带病毒的数据包和邮件越来越多,如果不小心打开了这些邮件,机器就有可能中毒。爪哇,邮件炸弹阶段 1997年,随着万维网上Java的普及,利用Java语言进行传播和资料获取的病毒开始出现,典型的代表是JavaSnake病毒。还有一些利用邮件服务器进行传播和破坏的病毒,例如Mail-Bomb病毒,它就严重影响因特网的效率。

Q4:java万年历程序如何编写?

我给你一份源代码: package com.accp;import java.util.Scanner;/** * 日历类的方法 * @author 王毅 * 2010/10/18号制作 */public class CalenderMethodWy { //以下是公共变量 /** * 存储用户输入的月份的天数 */ private int days=0; /** * 接收用户输入的年份 */ private int year; /** * 接收用户输入的月份 */ private int month; /** * 存储从1900/1/1到用户输入的年份和月份(之前)的总经历天数 */ private int totalDays=0; /** * 计算到底这一年是否是闰年 */ private boolean isRn; private Scanner input=new Scanner(System.in);/** * 显示欢迎信息 */ private void Welcome(){ System.out.println("******************欢迎使用万年历***************\n"); System.out.println("请输入年份:"); year=input.nextInt(); System.out.println("请输入月份:"); month=input.nextInt(); } /** * 计算是否是闰年 * @param passYear * @return */ private boolean isRunNian(int passYear){ if(passYear % 4==0 && passYear % 100!=0 || passYear % 400==0){ isRn=true; }else{ isRn=false; } return isRn; }/** * 计算2月份有多少天 * @param passYear * @return */ private int getYearOfDay(int passYear){ if(passYear % 4==0 && passYear %100!=0 || passYear %400==0){ return 29; }else{ return 28; } } /** * 计算从1900/1/1到用户输入的年份之前的所有天数 */ private void GetTotalDays(){ for(int i=1900;i<year;i++){ if(isRunNian(i)){ totalDays=totalDays+366; }else{ totalDays=totalDays+365; } } } /** * 计算用户输入的年从1月份到输入月份之前所经历的天数 */ private void setBeforeDays(){ int beforeDays=0; for(int i=1;i<=month;i++){ switch(i){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: days=31; break; case 2: days=getYearOfDay(year); break; default: days=30; } if(i<month){ beforeDays=beforeDays+days; } } totalDays=totalDays+beforeDays; }/** * 显示(打印)日历 */ private void printCalender(){ //存储当月第一天是星期几:星期日为0,星期一~星期六分别为1~6 int firstDayOfMonth; //星期几=1+总天数 %7; int temp=1+totalDays%7; if(temp==7){ //周日 firstDayOfMonth=0; }else{ firstDayOfMonth=temp; } System.out.println(year+"年"+month+"月的1号是星期"+firstDayOfMonth); System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t"); //输出制作位(\t) for(int i=0;i<firstDayOfMonth;i++){ System.out.print("\t"); } //循环输出该用的天数 for(int j=1;j<=days;j++){ System.out.print(j+"\t"); //在循环里面计算到底哪一天是星期六: //公式:(总天数+j(外层循环变量)-1)%7==5 这个就是计算星期六 if( (totalDays+j-1)%7==5){ System.out.println(); } } }/** * 这个方法是用户调用的,其它的方法用户不能看到 */ public void DisplayCalender(){ Welcome(); GetTotalDays(); setBeforeDays(); printCalender(); }}这个是测试类:package com.accp;public class Test { /** * @param args */ public static void main(String[] args) { CalenderMethodWy wy=new CalenderMethodWy(); wy.DisplayCalender(); }}

Q5:Java实现以1900年1月1日是给定一个年月日,然后显示对应星期几,要求使用基本语法,大体程序我都弄出来了

java.util.Calendarapi中有这个类,可以很方便的得到你想要的结果。下边是例子。import java.util.Calendar;import java.util.Scanner;public class Test { public static void main(String[] args) { Calendar c = Calendar.getInstance(); Scanner input = new Scanner(System.in); System.out.println("请输入年份"); int year = input.nextInt(); System.out.println("请输入月份"); int month = input.nextInt(); System.out.println(" 请输入天数"); int date = input.nextInt(); c.set(Calendar.YEAR, year); c.set(Calendar.MONTH, month - 1); c.set(Calendar.DATE, date); int week = c.get(Calendar.DAY_OF_WEEK); switch (week) { case 1: System.out.println("星期日"); break; case 2: System.out.println("星期一"); break; case 3: System.out.println("星期二"); break; case 4: System.out.println("星期三"); break; case 5: System.out.println("星期四"); break; case 6: System.out.println("星期五"); break; case 7: System.out.println("星期六"); break; } }}

Q6:编写Java程序。当以年月日的格式输入一个日期时,输出该年是否是闰年,该月有几天,该日是星期几

public static void main(String[] args) throws ParseException { System.out.println("输入一个日期"); Scanner input=new Scanner(System.in); String day=input.nextLine(); SimpleDateFormat a=new SimpleDateFormat("yyyy-MM-dd"); Date date=a.parse(day); Calendar c=Calendar.getInstance(); //设置以指定日期的日历 c.setTime(date); int year=c.get(Calendar.YEAR);//年份 int month=c.get(Calendar.MONTH)+1;//月份 int days=c.get(Calendar.DAY_OF_YEAR);//一年的第几天 if ((year%4==0 && year%100!=0)||year%400==0) { System.out.println("闰年"); switch (month) {     case 1: case 3: case 5: System.out.println("31天"); break; case 2: default: break; } } else  { System.out.println("平年"); } switch (days%7) { case 1: break;case 2: break; default: break; } } 给你写一部分  剩下的自己补充  懒得写了

相关文章