1、写一个函数 String getYesterday(String today){},只可以重要String基本类 不可以用data工具类
2、解析字符串,String getStr1(String Str,String flag),第一个参数指要输入的字符串,第二个代表要拆分的标志,比如说333113223zz,得到的应该是‘11’、‘22’,‘zz’。不可以用spli。

解决方案 »

  1.   

    楼上哥哥真风趣 不是脑筋急转弯 呵呵 不过我说漏一点today和yesterday都是8位数字的字符串比如说“20081112”,这里不考虑转换问题
    第二题主要用subString
      

  2.   

    取的最后两个日期减去1之后慢慢匹配吧,只是多写好多if else 还的判断闰年等等
      

  3.   

    答:解析字符串,String getStr1(String Str,String flag),你都没有说明:这个flag是个什么标记?比如333113223zz,得到的应该是‘11’、‘22’,‘zz’。怎么得到的(即:没有看到flag起作用啊)?
      

  4.   

    第一问  不之所云
    第二问  你都说了, 用substring , 你就自己截取贝, 从第几个开始截取几个 不就完了
      

  5.   

    String getYesterday(String today){}
    如果今天是2009-03-01,那么二月份的最后一天该怎么算?
      

  6.   

    可能我表达没清楚
    1、写一个函数 String getYesterday(String today){},只可以重要String基本类 不可以用data工具类 
        输入一个时间比如说20080101,应该得到20071231,不去计较数据验证。
    2、解析字符串,String getStr1(String Str,String flag),第一个参数指要输入的字符串,第二个代表要拆分的标志,比如说333113223zz,得到的应该是‘11’、‘22’,‘zz’。不可以用spli。
        第二个就是说输入两个参数,以第一个是字符处比如“123a321aaa44”,第二个参数输入a,要得到“123”、“32”、“44”
      

  7.   

    2
    public static String[] liu_split(String strInfo, String strSplit) { int size = 0;
    int index = 0;
    do {
    size++;
    index++;
    index = strInfo.indexOf(strSplit, index);
    } while (index != -1);
    String[] arrRtn = new String[size];  int startIndex = 0;
    int endIndex = 0;
    for (int i = 0; i < size; i++) {
    endIndex = strInfo.indexOf(strSplit, startIndex);
    if (endIndex == -1) {
    arrRtn[i] = strInfo.substring(startIndex);
    } else {
    arrRtn[i] = strInfo.substring(startIndex, endIndex);
    }
    startIndex = endIndex + 1;
    }
    return arrRtn;
    }
    }
      

  8.   

    不可以用data工具类 这个是不是不允许时间date类?第二个问题并不难。
    使用截取字符串的方法搞定。多做两次判断。具体做法可以参考9楼。不过感觉9楼的方法还有待补充。
      

  9.   

    public class Test {

    public static void main(String[] args) {
    String s = "20090301";
    System.out.println(getYesterday(s));
    }

    public static String getYesterday(String yesterday) {
    String returnStr = "";
    int year = 0;
    int month = 0;
    int day = 0;
    year = Integer.parseInt(yesterday.substring(0, 4));
    month = Integer.parseInt(yesterday.substring(4, 6));
    day = Integer.parseInt(yesterday.substring(6, 8));
    if(day != 1) {
    day = day - 1;
    } else {
    switch(month) {
    case 5:
    case 7:
    case 10:
    case 12:
    month = month - 1;
    day = 30;
    break;
    case 1:
    year = year - 1;
    month = 12;
    day = 30;
    break;
    case 3:
    if(isLeapYear(year)) {
    month = month - 1;
    day = 29;
    break;
    } else {
    month = month - 1;
    day = 28;
    break;
    }
    default:
    month = month - 1;
    day = 31;
    break;
    }
    }

    returnStr = "" + year + String.format("%02d", month) + String.format("%02d", day);

    return returnStr;
    }
    public static boolean isLeapYear(int year) {
    boolean b = false;
    if(year % 400 == 0) {
    b = true;
    }
    if((year % 4 == 0) && (year % 100 != 0)) {
    b = true;
    }
    return b;
    }
    }
      

  10.   

    第二道import java.util.Scanner;
    public class Split {
    public static void main(String[] args)
    {
    Scanner sc = new Scanner(System.in);
    System.out.print("str=");
    String str = sc.nextLine();
    System.out.print("flag=");
    String flag = sc.nextLine();
    String[] resultStr = getStr1(str,flag);
    if(resultStr == null)
    {
    System.out.println(str);
    }
    else
    {
    for(String s:resultStr)
    {
    System.out.print(s+" ");
    }
    }
    }
    public static String[] getStr1(String str,String flag)
    {
    int index = 0;
    int backIndex = 0;
    //用来确定String数组的长度
    int size = 0;
    int resultStrIndex = 0;

    do { 
    size++; 
    index++; 
    index = str.indexOf(flag, index); 
    } while (index != -1); 
    String[] resultStr = new String[size];

    while((index=str.indexOf(flag,backIndex))!=-1)
    {
    if(backIndex==index)
    {
    backIndex++;
    }
    else
    {
    resultStr[resultStrIndex++] = str.substring(backIndex, index);
    backIndex = index ;
    }
    }
    resultStr[resultStrIndex] = str.substring(backIndex);
    return  resultStr;
    }
    }
      

  11.   

    第一题: 可以参考JS 中的 Calendar  把每个月的最大天数列出来! 2月另外算 就可以了!  
    第二题: 如果只能用subString 你就一个一个字符取!匹配flag 就是了! 把不是flag 的连续的 char 列出来就可以了!如果可以正则表达式可以 免得那么麻烦
      

  12.   

    拜13楼 晕死,当初我也是这个思路,就是没写这么明白,把闰年的判断加到switch里面了,有点乱糟糟的。
      

  13.   

    第二题:import java.util.ArrayList;
    import java.util.Scanner;public class SplitDemo {
    public static void main(String[] args){
    System.out.print("Input a string: ");
    Scanner scan = new Scanner(System.in);
    String s = new String();
    if(scan.hasNext()){
    s = scan.next();
    }
    System.out.print("Input a param: ");
    Scanner scan1 = new Scanner(System.in);
    String param = new String();
    if(scan1.hasNext()){
    param = scan1.next();
    }
    SplitDemo sd = new SplitDemo();
    ArrayList list = sd.divString(s, param);
    for(int i=0 ; i<list.size() ; i++){
    System.out.print(list.get(i)+" ");
    }
    }

    ArrayList divString(String s,String param){
    ArrayList<String> list = new ArrayList<String>();
    int index = 0;
    CharSequence c = param.subSequence(0, param.length());
    while(s.contains(c)){
    String str = s.substring(0, s.indexOf(param, index));
    list.add(str);
    s = s.substring(s.indexOf(param, index)+param.length());
    }
    list.add(s);
    return list;
    }
    }
      

  14.   

    化简为繁是现在面试准则?第一题Calendar第二题正则都是很简单就能出来的吧