题目是简单的,还是自己在自己机子上写开心,纸上写看着我的字都欢乐不起来。
用 基本类型去编程:1. 计算昨天的日期,不校验日期。格式为YYYYMMDD,方法传递的参数为today ,返回yesterday,两个都为string
package com.interview;
public class CalculateYesterday {
public static String caculateDate(String today){
String yesterday = "";
Boolean isRunnian = false;
String monthStr , dayStr;
String tempYear = today.substring(0, 4);
int year = Integer.parseInt(tempYear);
int month = Integer.parseInt(today.substring(4,6));
int day = Integer.parseInt(today.substring(6,8));
day = day -1;
if (day == 0){
month =month - 1;
}
if (month == 0){
year = year - 1;
month = 12;
}
//考虑闰年
if ((year % 4==0 ) &&((year%100==0)&&(year%400==0))){
System.out.println(year+" 是闰年!");
isRunnian = true;
}
// 如果today为每月的起始月,则要取上个月的最后一天
if (day == 0){
switch (month) {
case 2 :
day =29;
if(isRunnian){
day =28;
}
break;
case 4:
case 6 :
case 9 :
case 11 :
day = 30;
break;
default:
day =31;
break;
}
}
/*组合*/
if (month <10){
monthStr ="0" +month;
} else monthStr = ""+month;
if (day < 10){
dayStr = "0" + day;
}else dayStr ="" +day;
yesterday = yesterday + year + monthStr + dayStr;
return yesterday;
}
}
2. 两个字串S1, S2 。 取S2里的前10个字符 和倒数后20个字符的组合,赋值给S1
package com.interview;
public class FormatString {
public String foramtStr (String s2){
String s1="";
for (int i=0; i<10;i++){
s1=s1+s2.charAt(i);
}
int length = s2.length();
for (int i=length-20;i<length; i++){
s1 =s1 + s2.charAt(i);
}
return s1;
}
}
3.十进制转换成十六进制
比如3287 ->CD7
package com.interview;
public class CalHex {
public String calHex (int num){
String hexStr ="" ;
while (num >=16){
int y = num %16;
hexStr =format(y) + hexStr;
num = num /16;
}
hexStr = format(num) + hexStr;
return hexStr;
}
private String format(int xx){
String hexStr ="";
switch (xx) {
case 10:
hexStr = "A";
break;
case 11:
hexStr ="B";
break;
case 12:
hexStr ="C";
break;
case 13:
hexStr ="D";
break;
case 14:
hexStr ="E";
break;
case 15:
hexStr ="F";
break;
default :
hexStr =hexStr + xx;
break;
}
return hexStr;
}
}
还有一些其他非编程题也是简单的,不想写了。