老师帮忙看看哪里有问题!

老师帮忙看看哪里有问题!

package Demo2;

import java.util.Random;

public class GenerateWeather implements Runnable {
    Weather weather;
    
    GenerateWeather(Weather weather) {
        this.weather = weather;
    }

    @Override
    public void run(){
        Random r=new Random();
        for(int i=0;i<100;i++) {
            weather.setTemperature(r.nextInt(40)+1);
            weather.setHumidity(r.nextInt(100)+1);
            try {
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
        }
    }

    

}

package Demo2;

public class ReadWeather implements Runnable{
    Weather weather;
    
    
    public ReadWeather(Weather weather) {
            this.weather = weather;
    }


    @Override
    public void run() {
        while(true) {
            weather.getHumidity();
            weather.getTemperature();
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

    

}


package Demo2;

public class Weather {
    private int temperature;
    private int humidity;
    boolean flag = false;

    public synchronized int getTemperature() {
        if (!flag) {
            try {
                wait();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        System.out.println("获取:" + temperature);
        flag = false;
        return temperature;
        
    }

    public synchronized void setTemperature(int temperature) {
        if (flag) {
            try {
                wait();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        System.out.println("生成:" + temperature);
        flag = true;
        this.temperature = temperature;
        

    }

    public synchronized int getHumidity() {
        if (!flag) {
            try {
                wait();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        System.out.println("获取:" + humidity);
        flag = false;
        return humidity;
    }

    public synchronized void setHumidity(int humidity) {
        if (flag) {
            try {
                wait();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        System.out.println("生成:" + humidity);
        flag = true;
        this.humidity = humidity;

    }

    public Weather() {

    }

}

package Demo2;

public class WeatherTest {

    public static void main(String[] args) {
        Weather weather=new Weather();
        new Thread(new GenerateWeather(weather)).start();
        new Thread(new ReadWeather(weather)).start();
        
    }

}


正在回答

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

1回答

同学你好,1. get和set方法只用来赋值。

2. 并建议创建generate()方法生成天气数据,并在GenerateWeather类中进行调用。

2. 建议创建read()和generate()方法读取和生产温度和湿度,并在ReadWeather类中调用read方法。修改后代码如下:

Weather类:

http://img1.sycdn.imooc.com//climg/5da7d6140994c82908170869.jpg

http://img1.sycdn.imooc.com//climg/5da7d6360900e4ae08780692.jpg

GenerateWeather类:

http://img1.sycdn.imooc.com//climg/5da7d65509bb233206220294.jpg

ReadWeather类:

http://img1.sycdn.imooc.com//climg/5da7d67809b2553204080190.jpg

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

  • 请叫我小猪猪 提问者 #1
    小尤真的非常贴心,解决了我困扰多天的问题,纠结了很久了,烦死了,你用你的智慧,解开了我的心结!谢谢!谢谢!谢谢!
    2019-10-17 19:32:06
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

帮助反馈 APP下载

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

公众号

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

在线咨询

领取优惠

免费试听

领取大纲

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