【问题标题】:Passing instance a value manually causes "incompatible types" error手动传递实例值会导致“不兼容的类型”错误
【发布时间】:2020-08-05 05:59:25
【问题描述】:
public class Order {
    boolean isFilled;
    double billAmount;
    String shipping;

     public Order(boolean filled, double cost, String shippingMethod) {
        if (cost > 24.00) {
            System.out.println("High value item!");
        }
        isFilled = filled;
        billAmount = cost;
        shipping = shippingMethod;
    }

    public void ship() {
          if (isFilled) {
              System.out.println("Shipping");
              System.out.println("Shipping cost: " + calculateShipping());
        } else {
            System.out.println("Order not ready");
        }
    }

    public double calculateShipping() {

        if (shipping ="Regular") {
            return 0;
        } else if (shipping = "Express") {
            return 1.75;
        } else {
            return .50;
        }
    }

    public static void main(String[] args) {
        // do not alter the main method!
        Order book = new Order(true, 9.99, "Express");
        Order chemistrySet = new Order(false, 72.50, "Regular");

        book.ship();
        chemistrySet.ship();
    }
}

上面的代码导致这个错误:

   Order.java:26: error: incompatible types: String cannot be converted to boolean
   if (shipping="Regular") 



{
                ^
   Order.java:28: error: incompatible types: String cannot be converted to boolean
    } else if (shipping = "Express") {
                        ^
   2 errors

【问题讨论】:

  • 下面我的回答对你有帮助吗?如果有效请采纳
  • 这里有人在说话,如果解决了问题,请接受我的回答,帮助我努力发现您的问题,您只需单击一下即可奖励我的帮助,成为乐于助人的会员这个社区的,请不要忽略这个stackoverflow.com/help/someone-answers
  • 你能接我的电话吗?

标签: java methods boolean conditional-statements instance


【解决方案1】:

首先让我们看看===在Java中的区别

  • =’是 Java 中的赋值运算符。
  • ==’是比较运算符,如果一侧是则返回true 彼此相等。

在您的情况下,您正在尝试两个比较两个变量,因此您不必使用赋值运算符=
并且由于String不是primitif类型(是一个类),所以不能使用==用于对象间的引用比较(地址比较),所以需要使用equals()方法比较两个String 类型的对象。如果任何字符不匹配,则返回 false。如果所有字符都匹配,则返回true。

要解决这个问题,您只需:

  • if (shipping="Regular")替换为if (shipping.equals("Regular"))

  • else if (shipping = "Express")else if (shipping.equals("Express"))

所以你的calculateShipping() 方法如下

public double calculateShipping() {

        if (shipping.equals("Regular")) {
            return 0;
        } else if (shipping.equals("Express")) {
            return 1.75;
        } else {
            return .50;
        }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-05
    • 2020-06-02
    • 2013-12-16
    • 1970-01-01
    • 2012-07-09
    • 2013-05-23
    • 2013-06-09
    • 1970-01-01
    相关资源
    最近更新 更多