您的位置:首页 > 职场人生

面试宝典之代码编写

2011-07-16 21:00 183 查看
第一题:

/**

* 字符串的一些课外题

* @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
;//把截取之后的份数作为数组的长度

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);

}

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: