您的位置:首页 > 其它

分享几道测试题!

2012-11-25 17:40 141 查看

1、 取出一个字符串中字母出现的次数。如:字符串:"abcdekka27qoq" ,输出格式为:a(2)b(1)k(2)...

  
import java.util.Arrays;

public class Test1 {

/**
* 1、 取出一个字符串中字母出现的次数。如:字符串:"abcdekka27qoq" ,输出格式为:a(2)b(1)k(2)...
*/
public static void main(String[] args) {

System.out.println();
fun("di5s80driuebnaAAAAAAAdskfnSasdw84wDsddis");//大写字母不考虑

}

public static void fun(String str){

char[] c = str.toCharArray();//转换成字符数组
Arrays.sort(c);//对字符数组排序
int count=1;//计数
for(int i=0;i<c.length-1;i++){//遍历数组
if(!(c[i]>='a'&&c[i]<='z')){//非a-z字符,只考虑小写字母。
continue;//跳过非a-z的字符;
}
if(c[i]==c[i+1]){
count++;
/*** delete 2014-02-07 ***
if((i+1)==(c.length-1)){
System.out.println(c[i]+"("+count+")");
}
*************************/
}else if(c[i]<c[i+1]){
System.out.print(c[i]+"("+count+")");
count=1;
}
//add 2014-02-07 评论1楼问题;
if((i+1)==(c.length-1)){
System.out.print(c[i+1]+"("+count+")");
}//end
}
}
}


 2、 金额转换,阿拉伯数字转换成中国传统形式。 例如:101000001010 转换为 壹仟零壹拾亿零壹仟零壹拾圆整

 
public class Test2 {

/**
* 10、 金额转换,阿拉伯数字转换成中国传统形式。 例如:101000001010 转换为 壹仟零壹拾亿零壹仟零壹拾圆整
*/
public static void main(String[] args) {
fun("315001000140");// 315,601,600,140
System.out.println();
fun("101000001010");//101,000,001,010

}

public static void fun(String str) {
char[] c = str.toCharArray();
int len = c.length;
int count = c.length;
for (int i = 0; i < len; i++) {
if (c[i] == '0' && i < len - 1) {// 避免最后一位为0出错;

if (len - i == 9) {// 亿位
System.out.print(num('y'));
}

if((c[i-1]!='0')||(c[i-2]!='0')||(c[i-3]!='0')){//整拾万,百万数字判断  ,例:315,601,600,140,315,601,000,140
if (len - i == 5) {// 过多的0判断万位
System.out.print(num('w'));
}
}
if (c[i + 1] == '0') {//再次出现0;
count--;// 退一位
continue; // 方便阅读;下一次循环;
} else {
System.out.print(num(c[i]));// 打印 中文数字 "零";
count--;// 退一位
}
} else {
count--;// 退一位

if (c[i] != '0') {
System.out.print(num(c[i]) + sel(count, len));// 打印除中文"零"以外的中文(壹-玖)和单位;
} else {
System.out.println(sel(count, len));// 最后一位为0,不打印"零"并加上最后的圆整
}
}
}
}

/*
* sel()单位选择
*
*/
public static String sel(int count, int len) {
int val = count % len;
String str;
switch (val) {
case 0:
str = num('z');break;
case 1:
str = num('s');break;
case 2:
str = num('b');break;
case 3:
str = num('q');break;
case 4:
str = num('w');break;//
case 5:
str = num('s');break;
case 6:
str = num('b');break;
case 7:
str = num('q');break;
case 8:
str = num('y');break;//
case 9:
str = num('s');break;
case 10:
str = num('b');break;
case 11:
str = num('q');break;
case 12:
str = num('w');break;//万亿;后面可以加case 13: ....
default:
str = null;
break;
}
return str;
}

/*
* 数字及单位
*/
public static String num(char c) {
String str = null;
switch (c) {
case '0':
str = "零";break;
case '1':
str = "壹";break;
case '2':
str = "贰";break;
case '3':
str = "叁";break;
case '4':
str = "肆";break;
case '5':
str = "伍";break;
case '6':
str = "陆";break;
case '7':
str = "柒";break;
case '8':
str = "捌";break;
case '9':
str = "玖";break;
case 's':
str = "拾";break;
case 'b':
str = "百";break;
case 'q':
str = "千";break;
case 'w':
str = "万";break;
case 'y':
str = "亿";break;
case 'z':
str = "圆整";break;
default:
str = "!";break;
}
return str;
}

}


3、 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。

public class Test3 {

/**
* 10、 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。
* 	但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

System.out.println("我ABC汉DEF--->截取4字节:"+fun("我ABC汉DEF",4));
System.out.println("我ABC汉DEF--->截取6字节:"+fun("我ABC汉DEF",6));
}

public static String fun(String str,int x){
//先将源字符串--->字节数组
byte[] src=str.getBytes();
byte[] des=new byte[x+1];//保存需要的字节数目+1;
for(int i=0;i<x+1;i++){
des[i]=src[i];//保存字节。
}
String r1=new String(des);//目标字符串,多一个
char[] c=r1.toCharArray();//转换为字符数组
String result=new String(c,0,c.length-1);//去除最后一个字符

return result;
}

}


  


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