我的这个Java编程哪里错了呢?

来源:百度知道 编辑:UC知道 时间:2024/06/24 15:22:14
public class Bulb
{
public int on;
public int off;

public Bulb (int i)
{
turn();
}

public boolean turn()
{
return(on==off);

}
public int getOn()
{
if (on>0)
on++;
return on;
}
public int getOff()
{
if (off>0)
off++;
return off;
}

public boolean isOn() {
// TODO Auto-generated method stub
return false;
}

}

这个上面是第一部分

public class Lights
{
final int turn=100;

int on=0, off=0;

Bulb myBulb=new Bulb();

for (int i = 0; i <= turn; i++)
{
myBulb.turn();
if (myBulb.isOn())
{
on++;
}
else
{
off++;
}
}
System.out.println("number of turn: "+turn);
Sys

最后你会得出 有100个灯泡, 0 个灯泡是亮的, 101个灯泡是暗的.

为什么有101个暗灯泡呢? 因为 :
if (myBulb.isOn())
{
on++;
}
else
{
off++;
}
}

你的 myBulb.isOn() 每次都是返回 false, 就永远执行 off++ ,而你的for循环是从 0 开始的, i <= turn 即 i<=100, 你从0到100 共循环101 次, 所以最后就出现101 个暗灯泡!
不应该让 i<=100, 改为i<100