华为的两道java笔试题

  1. 设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。   
  2. 以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。   
  3. public class ThreadTest1{   
  4. private int j;   
  5. public static void main(String args[]){   
  6. ThreadTest1 tt=new ThreadTest1();   
  7. Inc inc=tt.new Inc();   
  8. Dec dec=tt.new Dec();   
  9. for(int i=0;i<2>   
  10. Thread t=new Thread(inc);   
  11. t.start();   
  12. t=new Thread(dec);   
  13. t.start();   
  14. }   
  15. }   
  16. private synchronized void inc(){   
  17. j++;   
  18. System.out.println(Thread.currentThread().getName()+"-inc:"+j);   
  19. }   
  20. private synchronized void dec(){   
  21. j--;   
  22. System.out.println(Thread.currentThread().getName()+"-dec:"+j);   
  23. }   
  24. class Inc implements Runnable{   
  25. public void run(){   
  26. for(int i=0;i<100>   
  27. inc();   
  28. }   
  29. }   
  30. }   
  31. class Dec implements Runnable{   
  32. public void run(){   
  33. for(int i=0;i<100>   
  34. dec();   
  35. }   
  36. }   
  37. }   
  38. }   
  1. 编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。    
  2.   
  3.   答:代码如下:   
  4.   
  5. package test;    
  6.   
  7. class  SplitString {   
  8.  String SplitStr;   
  9.  int SplitByte;   
  10.  public SplitString(String str,int bytes) {   
  11.   SplitStr=str;   
  12.   SplitByte=bytes;   
  13.   System.out.println("The String is:'"+SplitStr+"';SplitBytes="+SplitByte);   
  14.  }   
  15.   
  16.  public void SplitIt() {   
  17.   int loopCount;   
  18.   loopCount=(SplitStr.length()%SplitByte==0)?(SplitStr.length()/SplitByte):(SplitStr.length()/SplitByte+1);   
  19.   System.out.println("Will Split into "+loopCount);   
  20.   for (int i=1;i<=loopCount ;i++ ) {   
  21.    if (i==loopCount){   
  22.     System.out.println(SplitStr.substring((i-1)*SplitByte,SplitStr.length()));   
  23.    } else {   
  24.     System.out.println(SplitStr.substring((i-1)*SplitByte,(i*SplitByte)));   
  25.    }   
  26.   }   
  27.  }   
  28.   
  29.  public static void main(String[] args) {   
  30.   SplitString ss = new SplitString("test中dd文dsaf中男大3443n中国43中国人0ewldfls=103",4);   
  31.   ss.SplitIt();   
  32.  }   
  33. }    
  34.   

你可能感兴趣的:(java,thread,c,J#,华为)