【问题标题】:Java calling of class method, "incompatible types" inside called method [closed]类方法的Java调用,被调用方法内部的“不兼容类型”[关闭]
【发布时间】:2013-05-24 00:29:02
【问题描述】:

/** 来自我的主类和方法 */

String ans = null;
    System.out.println("Has your address changed?(y/n): " );
    ans = input.next();
    munozAccount.changeAddress(ans); 

/**来自main方法调用的会计类 消息说需要:找到布尔值:java.lang.String */

public void changeAddress(String ans) {
    if (ans = "y") {
        cust.changeStreet();
        cust.changeCity();
        cust.changeState();
        cust.changeZip();
    } else {
        System.out.print("understood");
    }
}

【问题讨论】:

  • if (ans = "y") { 更改为if ("y".equals(ans)) {
  • if (ans = "y") 大错特错。
  • @user2430297:因为=赋值,而不是相等。 == 是相等的,尽管对于字符串,您实际上想使用 equals 方法。
  • 你想给变量 ans="y" 赋值。你想检查是否相等 if(ans.equals("y"))。需要一个布尔值,因为 if 语句正在检查条件是真还是假。你使用了一个作业
  • @SLaks:哦,不是非常错,对吗?对于刚接触从 B 语法派生的语言的人来说,这是一个很常见的错误。很多语言都乐于使用=,而不是 B、C、C++、Java、JavaScript、C#、D ...... :-)跨度>

标签: java string methods boolean


【解决方案1】:

您已在此行中使用了赋值运算符=

if (ans = "y") {

...结果类型为String,但if 语句需要boolean,因此出现错误。

使用equals method of String比较字符串值,这将返回boolean

if ("y".equals(ans)) {

"y" 首先避免出现NullPointerException,如果您说ans.equals("y")ansnull,则会产生这种情况。

【讨论】:

  • 可能值得一提的是== 是相等运算符,尽管您当然不会在这里使用它。
猜你喜欢
  • 2019-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-10
  • 2019-04-16
  • 1970-01-01
  • 2016-02-06
  • 1970-01-01
相关资源
最近更新 更多