java笔试手写代码 java面试手写算法( 三 )


public MyDate(){
}
public MyDate(int year, int month, int day) throws Exception{
if(year0 || month1 || month12 || day1 || daydays[month-1]){
throw new Exception("非法日期");
}
if(month == 2){
if(isLeapYear(year)==trueday29){
throw new Exception("非法日期");
}
if(isLeapYear(year)==falseday28){
throw new Exception("非法日期");
}
}
this.year = year;
this.month = month;
this.day = day;
}
//给定一个日期值java笔试手写代码,计算若干天后的日期值
public MyDate dateAdd(int num) throws Exception{
MyDate d = new MyDate(this.year, this.month, this.day);
days[1] = isLeapYear(d.year) ? 29 : 28;
d.day += num;
if(num0){
while(d.daydays[d.month-1]){
d.day -= days[d.month-1];
d.month++;
if(d.month12){
d.month = 1;
d.year++;
days[1] = isLeapYear(d.year) ? 29 : 28;
}
}
}
else{
while(d.day = 0){
d.day += days[(d.month+10)%12];
d.month--;
if(d.month1){
d.month = 12;
d.year--;
days[1] = isLeapYear(d.year) ? 29 : 28;
}
}
}
return d;
}
//如果有两个日期值java笔试手写代码 , 计算java笔试手写代码他们相距的天数 。
public int dateDiff(MyDate d1, MyDate d2) throws Exception {
MyDate date1 = new MyDate(d1.year, d1.month, d1.day);
MyDate date2 = new MyDate(d2.year, d2.month, d2.day);
int i;
date1.days[1] = isLeapYear(date1.year) ? 29 : 28;
for(i=1; idate1.month; i++){
date1.day += date1.days[i-1];
}
date2.days[1] = isLeapYear(date2.year) ? 29 : 28;
for(i=1; idate2.month; i++){
date2.day += date2.days[i-1];
}
if(date1.yeardate2.year){
for(i=date1.year; idate2.year; i++){
date2.day += isLeapYear(i) ? 366 : 365;
}
}
else if(date1.yeardate2.year){
for(i=date2.year; idate1.year; i++){
date1.day += isLeapYear(i) ? 366 : 365;
}
}
return date2.day - date1.day;
}
public boolean isLeapYear(int year){
return ((year%400==0) || (year%4==0year%100!=0)) ? true : false;
}
public String toString(){
StringBuffer buff = new StringBuffer();
if(year10){
buff.append("000" + year);
}
else if(year100){
buff.append("00" + year);
}
else if(year1000){
buff.append("0" + year);
}
else{
buff.append(year);
}
if(month10){
buff.append("-0" + month);
}
else{
buff.append("-" + month);
}
if(day10){
buff.append("-0" + day);
}
else{
buff.append("-" + day);
}
return buff.toString();
}
}
运行测试:
请输入一个日期
年:2011
月:2
日:29
非法日期
请输入一个日期
年:2011
月:2
日:27
时间间隔:
2
2011-02-27 在2天后就是 2011-03-01
2009-02-27 ~ 2011-03-01 相隔 732 天
请问,java笔试时,有没有手写代码的题???何止手写代码啊、直接给一段英文文档要java笔试手写代码你翻译java笔试手写代码的都有 。建议笔试之前最好上网搜下该公司去年的笔试题java笔试手写代码 , 会很有帮助的,腾讯今年实习生题目跟去年有很大相似 。
一般小公司手写代码都是很简短的代码,按照要求打印乘法表、各种排序、查找算法之类的,有的或许要给一套你,比如画er图,映射成代码,然后给出问题,用代码解决 。比较难的会直接给英文题目你做 , 比如百纳科技(海豚浏览器)2013实习生招聘 , 直接给的英文题目,这就跟acm差不多java笔试手写代码了 , java笔试手写代码我是灰溜溜的直接拿了试题就走了的,没脸交卷子

推荐阅读