A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Y1011 中级黑马   /  2015-9-18 15:23  /  3066 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

60黑马币
1、开启两个线程每隔一段时间分别向一个共享数组中添加元素,每个线程添加3个即可。
2、写一个线程类MyThread,该线程实现了Runnable接口,写一个main方法,用for循环创建5个线程对象。需求如下:
① 利用线程类的构造函数输出:"创建线程4"。
(备注:当创建一个线程的时候,标记为1,再次创建一个线程的时候,标记为2,所以输出的"创建线程4"就是创建的第四个线程)
② 在run方法中输出:“线程X :计数Y”,当执行次数达到6次的时候,退出。
(备注:其中“线程X”为第X个线程,“计数Y”为该线程的run方法执行了多少次)
3、有类似这样的字符串:“1.2,3.4,5.6,7.8,5.56,44.55”, 请按照要求,依次完成以下试题
   ① 以逗号作为分隔符,把已知的字符串分成一个String类型的数组,
           数组中的每一个元素类似于“1.2","3.4"这样的字符串;      
    ② 把数组中的每一个元素以.作为分割,把.号左边的元素作为key,
           把.号右边的元素作为value,封装到Map中,map中的key和value都是Object类型;        
    ③ 把map中的key封装到Set中,并且把set中的元素输出;
   ④ 把map中的value封装到Collection中,把collection中的元素输出。
4、求1000!的结果中包含多少个0?注:1000! = 1×2×3×4×5×...×999×1000

最佳答案

查看完整内容

1、2、4代码如下: package com.text; import java.util.Random; class arrayInput implements Runnable{ private int []a=new int[1000]; int i; int randomNum; Random ran=new Random(); public void run() { while(true){ synchronized (this) { //在这里同步一下,2个线程都会进入while循环,当第一个线程执行一次后就会释放资源解开锁, if(i%3==0){ //每输入3个数到数 ...

6 个回复

倒序浏览
1、2、4代码如下:
package com.text;

import java.util.Random;


class arrayInput implements Runnable{
        private int []a=new int[1000];
        int i;
       
        int randomNum;
        Random ran=new Random();
        public void run() {
               
                while(true){
                synchronized (this) {           //在这里同步一下,2个线程都会进入while循环,当第一个线程执行一次后就会释放资源解开锁,

                if(i%3==0){                     //每输入3个数到数组里都停顿1秒
                          try {
                                Thread.sleep(1000);
                         } catch (InterruptedException e) {
                                // TODO 自动生成的 catch 块
                                e.printStackTrace();
                        }
                                      }
          if(i==1000) {                    //当输入到1000时结束循环
                           break;
                          }
               int randomNum=ran.nextInt(1000);       //不知道你往数组输入什么数据就往里输入0到1000的随机数了。
               a[i]=randomNum;
               System.out.println(Thread.currentThread().getName()+"a["+i+"]="+a[i]);             //打印输入的数组数据看效果
               i++;
             
                  
                }          
               
                        }
               
        }
       
}

public class arrayDemo {

        public static void main(String[] args) {
                arrayInput a=new arrayInput();
                Thread t1=new Thread(a,"线程1:");
                Thread t2=new Thread(a,"线程2:");
        t1.start();
        t2.start();
        }

}



2
package com.text;
class MyThread implements Runnable{
        private String ThreadName;
        int t1,t2,t3,t4,t5;     //定义5个线程的计数器,分别计算5个线程执行了多少次
        public MyThread(){
                System.out.println("创建线程4");
                         }
       
        public void run(){
            while(true){
     
            if(t1==6||t2==6||t3==6||t4==6||t5==6)
            break;
                ThreadName=Thread.currentThread().getName();
                switch(ThreadName){
                case "线程1":{t1++;System.out.println(ThreadName+"...."+"计数:"+t1);break;}
                case "线程2":{t2++;System.out.println(ThreadName+"...."+"计数:"+t2);break;}
                case "线程3":{t3++;System.out.println(ThreadName+"...."+"计数:"+t3);break;}
                case "线程4":{t4++;System.out.println(ThreadName+"...."+"计数:"+t4);break;}
                case "线程5":{t5++;System.out.println(ThreadName+"...."+"计数:"+t5);break;}
                
                                       }
                   
                       }
         
       
                         }

                                  }
public class threadDemo {
       
        public static void main(String[] args) {
                MyThread myt=new MyThread();
            Thread t[]=null;
                for(int i=1;i<=5;i++){
               
                        new Thread(myt,"线程"+i).start();      //创建5个线程,线程名分别为线程1、线程2、线程3、线程4、线程5,
                                                      //这里使用匿名对象但是我希望在循环中用数组存5个线程循结束,一下直接启动5个线程这样效率高点,你试试                  
                       
                }
               
        }

}


4

package com.text;

import java.math.BigInteger;


class zero{
       
        zero(){
                int count=0;
                int[] res = new int[3000];    //知道结果是2000多位定义一个3000位的数组存放结果
        final int limit = 1000;       //阶乘从1000开始
        
        res[1] = 1;  
        int max_now = 1;

        for(int step = 1; step <= limit;step++)
        {        
            int temp = 0;         
            int now = max_now;     //40320
            int zero;
            for(zero = 1; zero <=now;zero++)   //PASS掉末尾的零.
            {
                if(res[zero] != 0)
                break;
            }
            
            for(int carry = zero-1;carry <= now;carry++)
            {
                res[carry] *= step;
                res[carry] += temp;   
                temp = 0;
               if(res[carry] >= 10)
               {
                    int carry_temp = carry;
                    temp = res[carry];
                    if(carry_temp <= max_now)
                    {
                        res[carry_temp] = temp%10;
                        temp/=10;
                        carry_temp++;
                    }
                    if(carry_temp > max_now)
                    {
                     while(temp >= 10)
                        {
                            res[carry_temp] = temp%10;
                            temp /= 10;
                            carry_temp++;
                        }
                        res[carry_temp] = temp;
                        temp = 0;
                        max_now = carry_temp;
                    }
               }
            }
                  
        }
        System.out.println("结果是"+max_now+"位");
        for(int j = max_now; j > 0; j--)
        {   if(res[j]==0){
                    count++;                     //计算出有多少个0
                      }
            System.out.print(res[j]);
        }
            System.out.print("\n");
            System.out.print("一共有"+count+"个0");
                }
               
        }

public class zeroDemo {

        public static void main(String[] args) {
                zero z=new zero();
       
        }

}
回复 使用道具 举报
package Demo4_1;

public class Test1_4 {

       
        public static void main(String[] args) {
               
                Test tw = new Test();
                Thread t1  = new Thread(tw);
                Thread t2  = new Thread(tw);
       
               
                t1.start();
                t2.start();
               
               
        }

}

class Test implements  Runnable
{

        @Override
        public void run() {
                // TODO Auto-generated method stub
               
                int a[] = new int[10];
                int n=0;
                while(true)
                {
                        synchronized(this)
                        {
                                if (n<3)
                                {
                                        a[n] = n;
                                        n++;
                                        System.out.println
                                        (Thread.currentThread().getName()+"  在向数组添加第 "+(n)+" 个数");
                                               
                                        try {
                                                Thread.sleep(1000);                                       
                                        } catch (Exception e) {
                                                // TODO: handle exception
                                                e.printStackTrace();
                                        }
                                }
                                else
                                {
                                        System.out.println(Thread.currentThread().getName()+"线程已完成");
                                        break;
                                }
                               
                        }
                }
               
        }
       
}
回复 使用道具 举报
我做出来2题第三题做不出来  第4题明天做出来一下发给你
回复 使用道具 举报
加我QQ吧发给你 673862758
回复 使用道具 举报
第三题先用String类的split()方法按 , 切割整个字符串,获得字符串数字, 第一小题结束。第二小题在之前的字符串数组里边在用split() 按 . 切割数组里的每个元素获取到两个数组。第一个作为key第二个作为value仍map里边就行
回复 使用道具 举报
兄弟 在不在      QQ上没备注   找不到你 了  找你好久了     看到了回个信啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马