面试宝典之代码编写

第一题:

/**
 * 字符串的一些课外题
 * @author Administrator
 *
 * 1.编写一个程序,输出一个字符串中的大写英文字母数,小写英文字母数以及非英文字母数。
 * 2.编写一个方法,输出在一个字符串中,指定字符串出现的次数
 *
 */
public class StringTest1 {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  /*
   * 输出大小写以及非英文字母的个数
   */
  String s = "AaaaBbbbcc^&%fjangasnf;lkds7897979789898";
  int lCount = 0, uCount = 0, oCount = 0;
  /*
   * 第一种方法
   */
  for(int i=0; i<s.length(); i++){
   char c = s.charAt(i);
   if(c >= 'a' && c <= 'z'){
    lCount ++;
   }else if(c >= 'A' && c <= 'Z'){
    uCount ++;
   }else{
    oCount ++;
   }
  }
  
  /*
   * 第二种方法
   */
  String sL = "abcdefghijklmnopqrstuvwxyz";
  String uL = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  for(int i=0; i<s.length(); i++){
   char c = s.charAt(i);
   if(sL.indexOf(c) != -1){
    lCount ++;
   }else if(uL.indexOf(c) != -1){
    uCount ++;
   }else{
    oCount ++;
   }
  }
  
  /*
   * 第三种方法
   */
  for(int i=0; i<s.length(); i++){
   char c = s.charAt(i);
   if(Character.isLowerCase(c)){
    lCount ++;
   }else if(Character.isUpperCase(c)){
    uCount ++;
   }else{
    oCount ++;
   }
  }
  System.out.println(lCount + " " + uCount + " " + oCount);
  
  /*
   * 指定字符串所出现的次数
   */
  String str = "sunjavahpjavajflsjflksjavajfkasdjfjavadfjiejava";
  String sToFind = "java";
  int count = 0;
  int index = -1;
  
  while((index = s.indexOf(sToFind)) != -1){
   str = str.substring(index + sToFind.length());
   count ++;
  }
  
  System.out.println(count);
 }

}

 

第二题:

/**
 * 写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔
 * @author Administrator
 *
 */
public class StringTest2 {

 /**
  * @param args
  */
 public static void main(String[] args) {
  StringTest2 st = new StringTest2();
  String str = "jfavaavjafasdlvafdafdvafdf";
  int chars = 3;
  String[] strs = st.split(str, chars);
  for(int i=0; i<strs.length; i++){
   System.out.println(strs[i]);
  }
 }

 public String[] split(String str, int chars){
  int n=(str.length()+chars-1)/chars;//(字符串的长度+截取的长度-1)/截取的长度=截取之后的份数
  String ret[] = new String[n];//把截取之后的份数作为数组的长度
  for(int i=0; i<n; i++){
   if(i<n-1){
    ret[i]=str.substring(i*chars, (i+1)*chars);
   }else{//最后一部分独立截取
    ret[i]=str.substring(i*chars);//括号中的参数表示起始的位置
   }
  }
  return ret;
 }
}

 

第三题:

/**
 * 写一个函数,2个参数,1个字符串,1个字节数,返回截取的字符串,要求字符串中的中文不能出现乱码:如
 * (“我ABC”,4)应该截取为“我AB”,输入(“我ABC汉DEF”,6)应该输出为“我ABC”而不是“我ABC+汉的半个”。
 * @author Administrator
 *
 */
public class StringTest3 {

 /**
  * @param args
  */
 public static void main(String[] args) {
  StringTest3 st = new StringTest3();
  String str = "我ABC就SDFD是FJDK我FJJ";
  int subBytes = 4;
  String strs = st.subString(str, subBytes);
  System.out.println("截取的字符串为:"+strs);
  
  st.yesterdayCurrent();
 }

 public String subString(String str, int subBytes){
  int bytes=0;//用来存储字符串的总字节数
  for(int i=0; i<str.length(); i++){
   if(bytes==subBytes || bytes - subBytes == 1){
    return str.substring(0, i);
   }
   char c=str.charAt(i);//查询一个字符
   if(c<256){//英文字符
    bytes += 1;//英文字符字节数看做1
   }else{//中文字符
    bytes += 2;//中文字符字节数看做2
//    if(bytes - subBytes == 1){
//     return str.substring(0, i);
//    }
   }
  }
  return null;
 }
 
 /**
  * 打印昨天的当前时刻
  */
 public void yesterdayCurrent(){
  Calendar cal = Calendar.getInstance();
  cal.add(Calendar.DATE, -1);
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  String time = sdf.format(cal.getTime());
  System.out.println("昨天的当前时刻:"+time);
 }
}

 

第四题:

/**
 * 用程序给出随便大小的10个数,序号为1-10,按从从小到大的顺序输出,并输出相应的序号
 * @author Administrator
 *
 */
public class StringTest4 {

 /**
  * @param args
  */
 public static void main(String[] args) {
  printRandomBySort();
 }

 @SuppressWarnings("unchecked")
 public static void printRandomBySort(){
  Random random = new Random();//创建随机生成器
  List list = new ArrayList();
  for(int i=0; i<10; i++){
   int in = random.nextInt(1000);
   list.add(in);//创建10个随机数,并放在集合list中
  }
  Collections.sort(list);//对集合中的元素进行排序,按照从小到大的顺序
  Iterator it = list.iterator();
  int count = 0;
  while(it.hasNext()){//顺序输出排序后的集合中的元素
   System.out.println(++count+":"+it.next());
  }
 }
}

 

第五题:

/**
 * 设有n个人依围成一圈,从第一个人开始报数,数到第m个人出列,然后从出列的下一个人开始报数,数到第
 * m个人又出列,……,如此反复到所有的人全部出列为止。设有n个人的编号分别为1,2,3,……,n,打印出出
 * 列的顺序。
 * @author Administrator
 *
 */
public class StringTest5 {

 /**
  * @param args
  */
 public static void main(String[] args) {
  play(10,7);
 }

 private static boolean same(int[] p, int l, int n){
  for(int i=0; i<l; i++){
   if(p[i]==n){
    return true;
   }
  }
  return false;
 }
 
 public static void play(int playerNum, int step){
  int[] p= new int[playerNum];
  int counter = 1;
  while(true){
   if(counter>playerNum*step){
    break;
   }
   for(int i=1; i<playerNum+1; i++){
    while(true){
     if(same(p,playerNum,i)==false){
      break;
     }else{
      i=i+1;
     }
    }
    if(i<playerNum) break;
    if(counter%step==0){
     System.out.println(i+"");
     p[counter/step-1]=i;
    }
    counter+=1;
   }
  }
  System.out.println();
 }
}

 

第六题:

/**
 * 递归列数树状结构
 * @author Administrator
 *
 */
public class TestTree {

 /**
  * @param args
  */
 public static void main(String[] args) {
  File f = new File("d:/kugou");
  System.out.println(f.getName());
  tree(f, 1);
 }

 private static void tree(File f, int level){
  String preStr = "";
  for(int i=0; i<level; i++){
   preStr += "---";
  }
  
  File[] childs = f.listFiles();//返回一个路径数组
  for(int i=0; i<childs.length; i++){
   System.out.println(preStr + childs[i].getName());
   if(childs[i].isDirectory()){//测试此子目录是否是含有子目录,若有继续调用本方法进行递归
    tree(childs[i], level+1);
   }
  }
 }
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值