5-3 自由编程题请老师点评

5-3 自由编程题请老师点评

//Weather类

public class Weather {

static int temperature;

static int humidity;

// 输入两个值,需要两个布尔型变量控制

static boolean flag1 = false;

static boolean flag2 = false;


public synchronized int getTemperature() {

return temperature;


}


public synchronized int getHumidity() {

return humidity;

}


public synchronized void setValue(int temperature, int humidity) {

this.humidity = humidity;

this.temperature = temperature;

// 两个属性已经赋值

}


// 生成天气数据的方法

public synchronized void generate() {

// 使用随机数获取0-40度之间的温度,0-100之间的湿度

if (flag1) {

try {

wait();

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

setValue((int) (1 + Math.random() * 40), (int) (1 + Math.random() * 100));

System.out.println("生成" + new Weather());

flag1 = true;

}


// 读取天气数据的方法

public synchronized void read() {

if (!flag1) {

try {

wait();

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

System.out.println("获取" + new Weather());

flag1 = false;

}


// 重写toString方法

@Override

public String toString() {

return "天气数据 [温度:" + temperature + ", 湿度:" + humidity + "]";

}

}

//生产天气数据线程类

public class GenerateWeather implements Runnable {


// 定义Weather对象

Weather weather;


// 构造方法

public GenerateWeather(Weather weather) {

this.weather = weather;

}


public GenerateWeather() {

// TODO Auto-generated constructor stub

}


@Override

public void run() {

// TODO Auto-generated method stub

for (int i = 0; i < 100; i++) {

weather.generate();

try {

Thread.sleep(10);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}


}

//读取天气数据线程类

public class ReadWeather implements Runnable {


// 定义Weather对象

Weather weather;


public ReadWeather(Weather weather) {

this.weather = weather;

}


public Weather getWeather() {

return weather;

}


public void setWeather(Weather weather) {

this.weather = weather;

}


@Override

public void run() {

// TODO Auto-generated method stub

for (int i = 1; i < 100; i++) {

weather.read();

try {

Thread.sleep(10);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}


}


}

//天气测试类

public class WeatherTest {


public static void main(String[] args) {

// TODO Auto-generated method stub

Weather weather = new Weather();

new Thread(new GenerateWeather(weather)).start();

new Thread(new ReadWeather(weather)).start();

}


}


正在回答

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

1回答

基本上没什么问题,加油,祝学习愉快~

  • 老师有没有源码参考啊 谢谢
    2018-06-01 21:19:06
  • 同学你好,因为程序有很多种实现方式,每个人都有自己的编程风格,所以我们这里没有源码供你参考,你的程序写的没有问题。祝学习愉快~
    2018-06-02 16:51:07
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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