手动传递实例值会导致 "不兼容类型 "错误。

问题描述 投票:-1回答:1
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
java methods boolean conditional-statements instance
1个回答
1
投票

首先让我们来看看两者之间的区别。=== 在Java中

  • ='是Java中的赋值运算符。
  • =='是比较运算符,如果一边等于另一边,则返回true。

在你的例子中,你正在尝试比较两个变量,所以你不必使用赋值运算符 =. 而且由于 String 不是一个基元类型(是一个类),你不能使用 == 用于对象之间的引用比较(地址比较),所以你需要使用方法 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;
        }
}
© www.soinside.com 2019 - 2024. All rights reserved.