代码是写出来了,但是如果老师不给需求分析,感觉就很僵硬,有点无从下手。

代码是写出来了,但是如果老师不给需求分析,感觉就很僵硬,有点无从下手。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
public class Weather {
     
    /**
     * 天气类Weather,包含int类型的温度(temperature)和湿度(humidity)属性
     */
    private int temperature;
    private int humidity;
    private boolean flag=false;
     
    //无参构造
    public Weather() {}
     
    //封装 仅限本类可以使用
    private int getTemperature() {
        return temperature;
    }
 
    private void setTemperature(int temperature) {
        this.temperature = temperature;
    }
 
    private int getHumidity() {
        return humidity;
    }
 
    private void setHumidity(int humidity) {
        this.humidity = humidity;
    }
         
    //生成天气数据的方法,使用随机数获取0-40度之间的温度,0-100之间的湿度
    public synchronized void generate() {
        if(flag) {
            try {
                wait();
            catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        int tem=(int)(Math.random()*50-10);//气温设定为-10-40度之间。
            this.setTemperature(tem);
        if(tem>=20) {
            this.setHumidity((int)(Math.random()*80+20));//当气温高于20度,湿度为20-100之间
        }else {
            this.setHumidity((int)(Math.random()*20));//当气温低于20度,湿度为之间0-20之间
        }
        System.out.println("生成天气数据"+this.toString());
        flag=true;
        notifyAll();//唤醒所有线程,防死锁!
         
    }
     
    //读取天气数据的方法
    public synchronized void read() {
        if(!flag) {
            try {
                wait();
            catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        System.out.println("读取天气数据"+this.toString());
        flag=false;
        notifyAll();//唤醒所有线程,防死锁!
         
    }
     
    //toString方法重写
    @Override
    public String toString() {
        String str="[温度:" this.getTemperature() + ", 湿度:" +this.getHumidity()+ "]";
        return str;
    }
 
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/**
 * 生成天气数据线程
 * @author Administrator
 *
 */
public class GenerateWeather implements Runnable{
        //定义Weather的对象
        Weather weather=new Weather();
         
        //无参构造
        public GenerateWeather() {}
         
        //有参构造
        public GenerateWeather(Weather weather){
            this.weather=weather;
        }
 
    @Override
    public void run() {
        while(true) {
            weather.generate();
            try {
                Thread.sleep(800);
            catch (InterruptedException e) {
                e.printStackTrace();
            }
        }    
    }
 
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/**
 * 读取天气数据
 * @author Administrator
 *
 */
public class ReaderWeather implements Runnable{
        //定义Weather的对象
        Weather weather=new Weather();
         
        //无参构造
        public ReaderWeather() {}
         
        //有参构造
        public ReaderWeather(Weather weather) {
            this.weather=weather;
        }
 
    @Override
    public void run() {
        while(true) {
            weather.read();
            try {
                Thread.sleep(800);
            catch (InterruptedException e) {
                e.printStackTrace();
            }
        }    
    }
 
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class WeatherTest {
 
    public static void main(String[] args) {
        Weather weather=new Weather();
 
        new Thread(new GenerateWeather(weather)).start();
        new Thread(new ReaderWeather(weather)).start();
        //启动生成/读取天气数据的线程!分开写的内容参考
//        GenerateWeather gw=new GenerateWeather(weather);
//        ReaderWeather rw=new ReaderWeather(weather);
//        Thread th1=new Thread(gw);
//        Thread th2=new Thread(rw);
//        th1.start();
//        th2.start();        
    }
}


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

        同学你好,1、贴出代码的实现效果没有问题,只是需要注意一下题目要求,比如:模拟生成100次天气数据,每次生成天气数据需要5秒的时间等等!

        2、现在基础阶段就是要同学多练习代码,熟悉代码的编写过程哦!觉得无从下手,还是对代码不熟悉哟,要多加练习~

        如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师
插入代码