老师帮忙看看哪里有问题!
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. get和set方法只用来赋值。
2. 并建议创建generate()方法生成天气数据,并在GenerateWeather类中进行调用。
2. 建议创建read()和generate()方法读取和生产温度和湿度,并在ReadWeather类中调用read方法。修改后代码如下:
Weather类:


GenerateWeather类:

ReadWeather类:

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
相似问题
登录后可查看更多问答,登录/注册
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星