面试宝典之代码编写
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);
}
}
}
}
/**
* 字符串的一些课外题
* @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);
}
}
}
}
相关文章推荐
- think in java interview-高级开发人员面试宝典代码示例
- 编写更好的代码---怎样面试一个程序员
- [经典]技术面试宝典: 很全面的算法和数据结构知识(含代码)
- think in java interview-高级开发人员面试宝典代码示例
- [置顶] think in java interview-高级开发人员面试宝典代码示例
- 技术面试宝典: 很全面的算法和数据结构知识(含代码)
- 技术面试宝典: 很全面的算法和数据结构知识(含代码实现)
- [经典]技术面试宝典: 很全面的算法和数据结构知识(含代码)
- 面试中临时让写的代码——编写一个延迟加载的单例设计模式
- 面试问题 如何编写Java 代码使得Java虚拟机崩溃
- 面试8之给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成
- [经典]技术面试宝典: 很全面的算法和数据结构知识(含代码)
- think in java interview-高级开发人员面试宝典代码示例
- 在.NET下编写中文代码程序
- 如何编写安全的Java代码
- 编写可读代码的艺术(第三部分 重新组织代码)
- VC编写代码生成GUID并转换为CString字符串
- 编写代码的经验总结
- 在YC++中编写多线程代码
- Java开发代码的编写规范记要