java骑行_在骑行中遇到麻烦并在Java中使用equals方法

我在尝试找出如何比较AM FM和XM之间的selectedRadio时遇到问题,这样我可以确定它当前在哪个电台上,然后返回特定电台的电台.我知道我需要equals方法,但我不确定该使用哪种方法来获得所需的结果.

public class AutoRadioSystem

{

private Radio selectedRadio;

private AMRadio radioAM;

private FMRadio radioFM;

private XMRadio radioXM;

//I'm not sure if this is the correct way to do this so that selectedRadio equals the object of radioAM

public AutoRadioSystem()

{

selectedRadio = radioAM;

}

//trying to figure out how to compare if selectedRadio is one of these.

public double getCurrentStation()

{

if (selectedRadio == radioAM)

{

return radioAM.getCurrentStaion();

}

else if (selectedRadio == radioFM)

{

return radioFM.getCurrentStaion();

}

return 0.0;

}

// its supposed to switch the radio from AM to FM when this method is called

public void selectRadio()

{

if (selectedRadio.equals(radioAM))

selectedRadio = radioFM;

}

public boolean equals (Object o)

{

if (o == null)

return false;

if (! (o instanceof AutoRadioSystem))

return false;

AutoRadioSystem other = (AutoRadioSystem) o;

return this.selectedRadio == other.selectedRadio;

}

public static void main (String [] args) {

AutoRadioSystem c = new AutoRadioSystem();

c.selectRadio();

double b = c.getCurrentStation();

System.out.println(b);

}

}

public abstract class Radio

{

double currentStation;

RadioSelectionBar radioSelectionBar;

public Radio()

{

this.currentStation = getMin_Station();

}

public abstract double getMax_Station();

public abstract double getMin_Station();

public abstract double getIncrement();

public void up()

{

}

public void down()

{

}

public double getCurrentStaion()

{

return this.currentStation;

}

public void setCurrentStation(double freq)

{

this.currentStation = freq;

}

public void setStation(int buttonNumber, double station)

{

}

public double getStation(int buttonNumber)

{

return 0.0;

}

public String toString()

{

String message = ("" + currentStation);

return message;

}

public boolean equals (Object o)

{

if (o == null)

return false;

if (! (o instanceof Radio))

return false;

Radio other = (Radio) o;

return this.currentStation == other.currentStation;

}

public static void main(String[] args)

{

Radio amRadio = new AMRadio();

System.out.println(amRadio);

Radio fmRadio = new FMRadio();

System.out.println(fmRadio);

Radio xmRadio = new XMRadio();

System.out.println(xmRadio);

}

}

public class FMRadio extends Radio

{

private static final double Max_Station = 108.0;

private static final double Min_Station = 88.0;

private static final double Increment = .01;

public FMRadio()

{

currentStation = Min_Station;

}

public double getMax_Station()

{

return this.Max_Station;

}

public double getMin_Station()

{

return this.Min_Station;

}

public double getIncrement()

{

return this.Increment;

}

public String toString()

{

String message = ("FM " + this.currentStation);

return message;

}

}

最佳答案

要点:(从帖子底部移动)

您将要了解测试ObjA == ObjB,ObjA.equals(ObjB)和ClassB的ObjA实例之间的区别.

这个方法

public double getCurrentStation()

{

if (selectedRadio == radioAM)

{

return radioAM.getCurrentStaion();

}

else if (selectedRadio == radioFM)

{

return radioFM.getCurrentStaion();

}

return 0.0;

}

可能无法按预期工作.如果您在Radio基类中实现了双重getCurrentStation()方法(您已这样做),则可以执行以下操作:

public double getCurrentStation()

{

return selectedRadio.getCurrentStation();

}

但这可能太过分了,因此您只需将AutoRadioSystem中的getCurrentStation()调用替换为selectedRadio.getCurrentStation().

同样的,

public void selectRadio()

{

if (selectedRadio.equals(radioAM))

selectedRadio = radioFM;

}

无法按预期工作.您可能想要类似

public void selectRadio()

{

if (selectedRadio. instanceOf AMRadio))

selectedRadio = new FMRadio();

}

也,

if (o == null)

return false;

if (! (o instanceof AutoRadioSystem))

return false;

可以简化为

if (! (o instanceof AutoRadioSystem))

return false;

由于o,如果o为null,则instanceof SomeClass返回false.

还有其他问题.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值