老师问一下问什么toString方法没有被调用
public class Weather {
private int wd;
private int sd;
boolean flag=false;
public int getWd() {
return wd;
}
public void setWd(int wd) {
this.wd = wd;
}
public int getSd() {
return sd;
}
public void setSd(int sd) {
this.sd = sd;
}
public synchronized void generate() {
if(flag) {
try {
wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
setWd((int)(Math.random()*40));
setSd((int)(Math.random()*100));
System.out.println("生成读取天气温度"+wd+"湿度"+sd);
flag=true;
notifyAll();
}
public synchronized void read() {
if(!flag) {
try {
wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
getWd();
getSd();
System.out.println("读取天气的温度"+wd+"湿度"+sd);
flag=false;
notifyAll();
}
@Override
public String toString() {
return "aacaca";
}
public class Sweather implements Runnable {
Weather weather;
public Sweather(Weather weather) {
this.weather=weather;
}
@Override
public void run() {
// TODO Auto-generated method stub
for(int i=0;i<100;i++) {
weather.generate();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public class Rweather implements Runnable{
Weather weather;
public Rweather(Weather weather) {
this.weather=weather;
}
@Override
public void run() {
for(int n=0;n<100;n++) {
weather.read();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public class WeatherTest {
public static void main(String[] args) {
Weather ad=new Weather();
Sweather a=new Sweather(ad);
Rweather b=new Rweather(ad);
Thread a1=new Thread(a);
Thread a2=new Thread(b);
a1.start();
a2.start();
}
}
这是我写的,不清楚为什么toString方法没有被调用
正在回答
同学你好,在实例化类时,是会自动调用toString方法,但同学并没有进行输出,所以没有内容进行输出。如下图所示:
如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星