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