java中骑行和使用equals方法遇到的问题

2023-12-09

我在尝试弄清楚如何比较 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), and ObjA instanceof ClassB.


这个方法

public double getCurrentStation()
{
    if (selectedRadio == radioAM)
    {
        return radioAM.getCurrentStaion();
    }
    else if (selectedRadio == radioFM)
    {
        return radioFM.getCurrentStaion();
    }
    return 0.0;
}

可能不会像你期望的那样工作。如果您实施double getCurrentStation()Radio 基类中的方法(您所做的),您可以执行以下操作:

public double getCurrentStation()
{
    return selectedRadio.getCurrentStation();
}

但这可能有点过分了,所以你应该更换getCurrentStation()来电AutoRadioSystem with selectedRadio.getCurrentStation().

相似地,

public void selectRadio()
{
    if (selectedRadio.equals(radioAM))
        selectedRadio = radioFM;
}

不会像你期望的那样工作。你可能想要类似的东西

public void selectRadio()
{
    if (selectedRadio. instanceOf AMRadio))
        selectedRadio = new FMRadio();
}

Also,

if (o == null)           
    return false;        
if (! (o instanceof AutoRadioSystem))           
    return false;  

可以简化为

if (! (o instanceof AutoRadioSystem))
    return false;

Since o instanceof SomeClass回报false if o is null.

还有其他问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java中骑行和使用equals方法遇到的问题 的相关文章

  • OpenJDK 11 问题 - 客户端在上次 UNWRAP 之前完成握手

    我正在将代码库从 Oracle Java 1 8 0 131 迁移到 OpenJDK 11 0 1 我们有实现 nio ssl 套接字通道的代码 在 Java 8 中 客户端 服务器握手工作正常 在 Java 11 中 客户端在解包来自服务
  • 如何在java中以编程方式访问网页

    有一个网页 我想从中检索某个字符串 为此 我需要登录 单击一些按钮 填充文本框 单击另一个按钮 然后就会出现字符串 我怎样才能编写一个java程序来自动执行此操作 是否有任何有用的库用于此目的 Thanks Try HtmlUnit htt
  • InflateException 膨胀类 android.support.design.widget.CoordinatorLayout 时出错

    E AndroidRuntime 致命异常 main 进程 com atech a business PID 30662 java lang RuntimeException 无法启动活动 ComponentInfo com atech a
  • 在这种情况下,我如何处理 Function 和省略号/可变参数?

    我的项目之一是抛出 lambda 表达式 https github com fge throwing lambdas 我的目标是简化潜在的使用 FunctionalInterfaces in Streams 其在流中使用的唯一 缺陷 是它们
  • Tomcat:Java 静态变量作用域、应用程序范围还是会话范围?

    java 静态变量是否在使用相同 web 应用程序的所有会话之间共享 或者每个会话都有自己的静态变量版本吗 换句话说 Tomcat 是为每个会话创建一组新的类 还是为整个 Web 应用程序创建一组新的类 Tomcat 创建一个ClassLo
  • [重复]

    这个问题在这里已经有答案了 有什么区别List
  • 由于 maven-surefire-plugin,Maven 构建失败

    我这里有类似的问题eclipse 中缺少 maven surefire plugin https stackoverflow com questions 23588957 maven surefire plugin missing in e
  • 将 Flash 文件上传与 JSF 集成

    我看到我们可以通过flash文件上传来上传多个文件 喜欢SWF上传 http code google com p swfupload or YUI上传器 http yuilibrary com yui docs uploader 是否可以将
  • 动态更新 LookAndFeel 值

    我希望能够动态更新 Swing GUI 的 LookAndFeel 属性 在本例中 我有一个简单的 Swing Awt 游戏 运行最初为 Nimbus 的游戏LookAndFeel 在启动后的各个时刻 我只想更改 比方说 一个细节 应用程序
  • 阻止 GWT 中的事件冒泡

    我有以下代码片段 changeTextArea 是一个 TextArea 对象 changeTextArea addKeyboardListener new KeyboardListenerAdapter public void onKey
  • 无法为对象堆保留足够的空间

    每次尝试运行该程序时 我都会重复出现以下异常 VM初始化期间发生错误 无法为对象堆保留足够的空间 无法创建Java虚拟机 我尝试增加虚拟内存 页面大小 和 RAM 大小 但无济于事 我怎样才能消除这个错误 运行 JVM XX MaxHeap
  • 从 API Explorer 调用 API 方法时不允许使用范围

    我在 Google App Engine 中有一个奇怪的行为 我正在使用 Eclipse 和 Java 进行开发 特别是使用 Google Cloud Endpoints 我使用以下设置创建了一个示例 API 实际上 我正在使用许多其他示波
  • 优化两个三位数乘积的最大回文数?

    我正在研究一个面试问题 我被问到这个问题 我应该编写一个程序 从两个三位数的乘积中找到最大的回文数 这里是question https projecteuler net problem 4 我想出了这种从底部开始的蛮力方法 public c
  • 无法实例化类对象的类型 (Java)

    这是我收到错误的代码 在 new 之后的第二个 Killer 处 String classes new String 5 kills 0 Brian Moser kills 1 James Doakes kills 2 Lila Tourn
  • Java编译错误:包不存在

    在我的工作区 wsPrivate 中 我有 3 个 gradle 项目 刽子手 像素视图 Reports PixelView 和 Reports 项目编译良好 然而 Hangman 使用这两个项目 并且有些在编译时找不到包 请参阅以下错误
  • 计算事件之间的天数 - Android

    我一直在研究 Android API 并一直在寻找一种方法来计算当前日期和未来日期之间的天数 我对 android 还很陌生 而且我已经有几年没有做过 java 了 计算这个最简单的方法是什么 Thanks 最简单的方法是使用乔达时间 ht
  • 异步方法的同步版本

    在 Java 中创建异步方法的同步版本的最佳方法是什么 假设您有一个包含这两种方法的类 asyncDoSomething Starts an asynchronous task onFinishDoSomething Called when
  • 有没有办法让 SonarQube 只警告不完整的 Switch 语句?

    使用 Java SonarQube 抱怨枚举值上的 switch 语句没有default case 给出的推理是 最终默认条款的要求是防御性编程 该条款应采取适当的行动 或包含 关于为什么不采取行动的适当评论 当开关盖上时 枚举的所有当前值
  • Java 和 SQL Server 中的精度噩梦

    我一直在与 Java 和 SQL Server 中的精确噩梦作斗争 直到我不再知道了 就我个人而言 我理解这个问题及其根本原因 但向地球另一端的客户解释这一点是不可行的 至少对我来说 情况是这样的 我在 SQL Server 中有两列 Qt
  • 切换按钮形状不变

    我正在尝试制作一个带有绿色背景的圆形切换按钮 我用了

随机推荐

  • 使用 PHP 和 Apache 路由 URL 路径

    我正在尝试为我的网站创建一个漂亮的网址结构 我的路由器类仅在 url 的样式为 something value 时才起作用 我如何得到它 它的工作方式如下 something value 在我的 htaccess 中我有 Options F
  • 修改默认的 HTML5 视频控件

    我有一个相当不寻常的问题要问你们 这可能很愚蠢 但我是这个领域的新手 我真的很感激一些帮助 正如标题所示 我想知道是否有一种方法可以禁用默认浏览器控件中的特定按钮HTML5 video 我知道每个浏览器都有自己独特的一组控件 所以我认为我不
  • 有没有办法在 TextStream 文件中向后导航?

    我已经开始使用 fso 对象来克服 VBA 的 2GB 限制 一切看起来都符合我的目的 只是我找不到路要走向后在文本流文件中 为了继续前进 我使用了读取 字符数 和跳过 字符数 有办法这样做吗 我遇到了同样令人沮丧的限制 这是一个包装本机
  • 无法加载文件或程序集 HRESULT:0x80131515(将控制器添加到网络驱动器上具有程序集引用的 MVC 项目时)

    我见过这个 VSTS 2010 SGEN 错误 无法加载文件或程序集 HRESULT 异常 0x80131515 并且所有答案都不起作用 当我构建或执行任何操作时它也不会出现 我可以正常运行该项目 当我尝试添加实体框架模板化控制器时会发生这
  • 如何创建一个防止新头出现的水银钩?

    我有几个从 SVN 转换而来的存储库 并且我们希望确保当人们推送到存储库时他们无法创建额外的头 里面有几个钩子提示和技巧 wiki 页面如果有多个头 则可以防止推动 但是我如何构建一个防止推动的钩子new heads 似乎正确的方法是比较修
  • 如何为 Kubernetes 中托管的多个应用程序选择 Kafka 事务 ID?

    我有一个经典的微服务架构 所以 有不同的应用 每个应用程序可能有1 N实例 该系统部署到Kubernetes 所以 我们有很多不同PODs 可以随时启动和停止 我想实施读 处理 写模式 所以我需要 Kafka 事务 要配置交易 我需要设置一
  • 我在哪里对我的密码进行加盐和哈希处理?在客户端还是在主机?

    我认为直接在客户端计算机上对密码进行加盐和哈希处理会更明智 原因是 我实际上从来不想获取用户的密码 这个字符串应该对他保密 而不是对我们俩保密 现在有人争论说 你想对盐保密 所以你不能通过通道以明文形式发送它 显然 事实并非如此 所以现在我
  • 如何将行号投影到 Linq 查询结果中

    如何将行号投影到 linq 查询结果集上 而不是说 字段 1 字段 2 字段 3 字段 1 字段 2 字段 3 我想 1 字段1 字段2 字段3 2 字段1 字段2 字段3 这是我的尝试 public List
  • 如何在 Customer.create 之后解析 Stripe JSON 响应?

    我读过使用此版本 Stripe API 的其他线程 但实际解析嵌套 JSON 的问题从未得到解答 例如 创建信用卡后如何解析 Stripe JSON 响应 或标记为重复 例如 如何读取 stripe webhook 响应 通过 重复的起源
  • 事件句柄和可见

    好的 我正在为我的班级做一个项目 我必须将所有内容都放在一页上 并在顶部有一个菜单 菜单中应该有新建 打开 来自 Html 保存和退出 我已经完成了除了 From HTML 之外的所有操作 我有点困惑 当用户单击 来自 HTML 时 需要将
  • java和python之间传递数据

    如果我的问题很菜鸟 我很抱歉 我正在运行 Django 1 2 和 pgsql 8 4 我需要在获取用户的输入后运行 Java 程序 进行一些计算并将结果返回给用户 我可以知道在 Java 和 Python Django 之间传递数据的最佳
  • 如何通过 ingress 将服务暴露给外部 Kubernetes 集群?

    我正在努力将 AWS 集群中的服务公开给外部并通过浏览器访问它 自从我的上一个问题还没有得出任何答案 我决定从几个方面简化问题 首先 我创建了一个无需任何配置即可运行的部署 基于本文 I did kubectl create namespa
  • 将字符串值聚合到列表中

    我正在尝试使用一些非常简单的逻辑将未旋转的列转换为本质上相当于分组列表的内容 然而 在有效地做到这一点上遇到了困难 本质上 我有一个数据集 如下所示 CUST ID ORDER 1 Cake 1 Bread 2 Cake 3 Cake 3
  • 使用自动实现的属性或自己实现该属性

    在 C 中 我们可以创建一个自动实现的属性 如下所示 public string MyValue get set 然而 我们也可以像这样自己创建一个属性 private string myValue public string MyValu
  • 颜色条不适用 vmin 和 vmax

    我有以下奇怪的行为 当我限制图形的范围时 颜色图仍然显示它 import matplotlib pyplot as plt import numpy as np fig ax plt subplots x np linspace 0 1 1
  • 复选框标签的 jQuery 选择器

  • Kinect / Primesense (Xtion) ROS Ubuntu 通过虚拟机 (VMware)

    由于我花了相当长的时间才弄清楚如何让 Xtion Primesense 在 VMware 上工作 所以我想在这里与大家分享 使用 Kinect 时 即使 VMware 已成功连接该设备 我也无法让 ROS 查看该设备 roslaunch o
  • ARM:为什么立即数只有 12 位?

    这是什么意思 我只有 12 位用于立即常量 所以我只能表示从 0 到 2 12 4096 的立即常量吗 操作数 2 如果是寄存器 可以有 32 位 但为什么立即数只有 12 位 这个数字从哪里来 它由指令集定义 例如 这MOV指令编码为 3
  • 如何使用 dask/dask-cudf 将单个大型镶木地板文件读取到多个分区?

    我正在尝试阅读一个大的parquet文件 大小 gt gpu size 使用dask cudf dask但它目前正在将其读入单个分区 我猜测这是从文档字符串推断出的预期行为 dask dataframe read parquet path
  • java中骑行和使用equals方法遇到的问题

    我在尝试弄清楚如何比较 AM FM 和 XM 之间的 selectedRadio 时遇到问题 以便我可以确定它当前所在的位置 然后返回特定收音机的电台 我知道我需要 equals 方法 我只是不确定使用它来获得我正在寻找的结果的正确方法 p