Java编程篇1.将一个十进制数(byte类型)转化二进制数,将二进制数前后颠倒,再算出颠倒后其对应的十进制数。publicclassMyByte{privatebyteb;privateinta[]={0,0,0,0,0,0,0,0};publicMyByte(byteb){this.b=b;}publicvoidtenToSecond(){inti=0;do{a[i]=b%2;b=(byte)(b/2);i++;}while(b!=0);}publicbytetoTen(){inttemp[]={0,0,0,0,0,0,0,0},j=0;for(inti=7;i=0;i--){temp[j]=a[i];j++;}for(inti=0;i8;i++){b+=temp[i]*2;}returnb;}publicstaticvoidmain(String[]args){MyBytemb=newMyByte((byte)7);mb.tenToSecond();System.out.println(转化后的字符:+mb.toTen());}}2.实现简易字符串压缩算法:一个长度最大为128的字符串,由字母a-z或者A-Z组成,将其中连续出现2次以上(含2次)的字母转换为出现次数加字母,以达到压缩目的。importjava.util.*;publicclassThreadTestA{voidstringZip(charinputStr[],intlen,charoutputStr[]){intk=0;for(inti=0;ilen;i++){intj=i+1,n=1;while(jlen){//选取i的字符比较i后面的if(inputStr[i]!=inputStr[j]){//若i与j不等,i向后移一位if(n1){outputStr[k++]=(n+).charAt(0);//数字转化成对应的数字字符}outputStr[k++]=inputStr[i];break;}else{//若i与j相等,j向后移一位,再判断j++;n++;}i=j-1;}if(j==len&&n==1)outputStr[k]=inputStr[i];if(j==len&&n1){outputStr[k++]=(n+).charAt(0);outputStr[k]=inputStr[i];}}for(intj=0;j=k;j++){System.out.print(outputStr[j]);}}publicstaticvoidmain(String[]agrs){Scannercin=newScanner(System.in);Stringstr;while(cin.hasNext()){str=cin.next();ThreadTestAt=newThreadTestA();intlen=str.length();charoutputStr[]=newchar[len];t.stringZip(str.toCharArray(),len,outputStr);}}}3.用java写一个字符串匹配“{”,“}”。用栈结构//StringMatch.javaimportjava.util.Stack;publicclassStringMatch{privateStringstr;publicStringMatch(Stringstr){this.str=str;}publicbooleanmatch(){StackCharacterst=newStackCharacter();charch[]=str.toCharArray();intn=str.length(),flag=0;for(inti=0;in;i++){st.push(ch[i]);}//出栈时记录flag的变化,如果第一次出现},输入的串有误。若flag0,flag0都不匹配。for(inti=0;in;i++){chartempch=st.pop();if(tempch=='}'){flag++;}elseif(tempch=='{'){flag--;}if(tempch=='{'&&flag==1){System.out.println(输入格式有误,‘}’不能首次出现!);returnfalse;}}if(flag==0){returntrue;}returnfalse;}}//Test.javapublicclassTest{publicstaticvoidmain(String[]args){Stringstr=}{2*{1+3}/{3*{1+1}-3};StringMatchsm=newStringMatch(str);if(sm.match()){System.out.println('{'和'}'匹配!);}else{System.out.println('{'和'}'不匹配!);}}}4.将16进制字符串转化成10进制整数输出。例如输入0x15a,输出:346。publicclassTest{intinvsert(Stringstr){inttemp=0;chara[]=str.toCharArray();intm=a.length;int[]b=newint[m-2];/***将字符数组转化成整型数组*/for(inti=2,j=0;im;i++,j++){if(a[i]='0'&&a[i]='9'){b[j]=a[i]-'0';//将数字字符变成数字}elseif(a[i]='a'&&a[i]='e'){b[j]=10+97-a[i];//将字母字符变成数字}}for(inti=m-2-1,n=0;i=0;i--){temp+=b[i]*((int)Math.pow(16,n));n++;}returntemp;}publicstaticvoidmain(String[]args){Testt=newTest();Stringstr=0x15a;System.out.println(t.invsert(str));}}5.函数voidCleanString(char*str)的功能是删除字符串str中的所有数字字符和非字母字符,并将字符串压缩。要求:不使用c库,不开辟新空间,复杂度好。publicclassTest{voidCleanString(Stringstr){charch[]=str.toCharArray();intn=str.length(),m=0;/*索引i和j,当j对应的是字母时先判断ch[i]!=ch[j],再i++,最后将j赋值给i.....*特殊情况:i=0不是是字母时就要把j第一次的字母赋值给ch[0]*/for(intj=0,i=0;jn;j++){if((ch[j]='a'&&ch[j]='z')||(ch[j]='A'&&ch[j]='Z')){if(i==0&&!(ch[0]='a'&&ch[0]='z')||(ch[0]='A'&&ch[0]='Z')){ch[0]=ch[j];}if(ch[i]!=ch[j]){i++;ch[i]=ch[j];}}m=i+1;}for(intj=0;jm;j++){System.out.print(ch[j]);}}publicstaticvoidmain(String[]args){Testt=newTest();Stringstr1=0xxabb00;//xabStringstr2=xx00ab0bb;//xabt.CleanString(str1);System.out.println();t.CleanString(str2);}}6..已知一个整数数组A[n],写出算法实现将奇数元素放在数组的左边,将偶数放在数组的右边。要求时间复杂度为O(n)。voidsort(inta[],intn){inti=0,j=n-1;while(i!=j){while(a[i]%2==1){i++;}while(a[j]%2==0){j--;}if(ij){swap(a[i],a[j]);}}}7.创建两个线程,每个线程打印出线程名字后再睡眠,每个线程前后共睡眠5次,最后打印睡眠结束信息。使用2种方法:Thread和Runnable。方法一:ThreadpublicclassBBextendsThread{inttime;publicBB(inttime){super();this.time=time;}publicvoidrun(){for(inti=1;i=5;i++){try{synchronized(this){System.out.println(Thread.currentThread().getName()+第+i+进入睡眠);notify();sleep(time);wait();if(i==5){System.out.println(Thread.currentThread().getName()+睡觉结束);notify();}}}catch(InterruptedExceptione){e.printStackTrace();}}}}//Test.javapublicclassTest{publicstaticvoidmain(String[]args){BBc=newBB(50);Threadt1=newThread(c);t1.start();Threadt2=newThread(c);t2.start();}}方法二:Runnable接口:同步代码一样8.两个线程交替打印。例如第一个线程打印1,接着第二个线程打印100,接着第一个线程打印2。publicclassTest{publicstaticvoidmain(String[]args){CCc=newCC(1);Threadt1=newThread(c,线程1);t1.start();Threadt2=newThread(c,线程2);t2.start();}}//CC.javapublicclassCCextendsThread{publicCC(intnum){super();this.num=num;}privateintnum;publicvoidrun(){for(inti=1;i=5;i++){try{synchronized(this){notify();if(线程1.equals(Thread.currentThread().getName())){System.out.println(Thread.currentThread().getName()+:+num);num--;}else{System.out.println(Thread.currentThread().getName()+:+(num+100));}num++;wait();//if(i==5)notifyAll();}}catch(InterruptedExceptione){e.printStackTrace();}}}}9.设计4个线程,其中2个对j进行加1,其中2个对j进行减1。publicclassThreadTestA{privateintj;publicsynchronizedvoiddecValue(){for(inti=0;i5;i++){j--;System.out.println(Thread.currentThread().getName()+-dec:+j);}}publicsynchronizedvoidincValue(){for(inti=0;i5;i++){j++;System.out.println(Thread.currentThread().getName()+-inc:+j);}}classIncOfJextendsThread{publicIncOfJ(Stringname){super(name);}pu