当前位置: 首页 > 知识库问答 >
问题:

Java上的条件和控制流(codecademy)

谯志诚
2023-03-14

我刚刚开始学习Java,我被困在Codecademy的条件和控制流部分。

我正在尝试添加一个方法,如果在“加利福尼亚”之外发货,则可以操作shipping成本变量。我真的不确定如何在此基础上进行扩展(如果有任何问题,请告诉我),但我对如何做到这一点感到困惑,还是它对我所在的部分来说太高级了?

这是我的第一篇帖子,所以如果我使用了任何错误的功能,请告诉我。

public class Order {
  boolean isFilled;
  double billAmount;
  String shipping;
  
  public Order(boolean filled, double cost, String shippingMethod, int zip) {
        if (cost > 24.00) {
      System.out.println("High value item!");
    } else {
      System.out.println("Low value item!");
    }
    isFilled = filled;
    billAmount = cost;
    shipping = shippingMethod;
  
  }
  
  public void ship() {
    if (isFilled) {
      System.out.println("Shipping");
    } else {
      System.out.println("Order not ready");
    }
    
    double shippingCost = calculateShipping();
    
    System.out.println("Shipping cost: ");
    System.out.println(shippingCost);
  }
  
  public double calculateShipping() {
    double shippingCost;
    switch (shipping) {
      case "Regular":
        shippingCost = 0;
        break;
      case "Express":    
        shippingCost = 1.75;
        break;
      default:
        shippingCost = .50; 
    }
    return shippingCost;
    }

// customer address
   public void address(int streetNumber, String streetName, String town, String city, String state, int zipCode){
     double shippingCost;
     
     


     if (state != "California"){
       shippingCost += 10;
     }     

   }
  
  public static void main(String[] args) {
    // create instances and call methods here!

  }
}

为此,我得到了以下信息:

Order.java:54: error: variable shippingCost might not have been initialized
       shippingCost += 10;
       ^
1 error

共有2个答案

凤高翰
2023-03-14

您应该为该变量分配一个值。shipping成本。如果您添加双shipping成本=0;它会起作用。

//客户地址

public void address(int streetNumber, String streetName, String town, String city, String state, int zipCode){
     double shippingCost = 0;
 
 


 if (state != "California"){
   shippingCost += 10;
 }     

}

贺海
2023-03-14

试试这个:

// customer address
   public void address(int streetNumber, String streetName, String town, String city, String state, int zipCode){
     double shippingCost = 0.0f;
     
     

     // if shipping isn't california, add 10 to it
     if (!state.equalsIgnoreCase("California")){
       shippingCost += 10;
     }     

   }

现在,进一步的事情...

编译器警告您,运费没有初始化。它可能是0,但这不能保证(因此出现警告),因此我们将其初始化为0。

此外,将字符串与==进行比较只会将地址、字符串的地址与字符串池中“California”文字的地址进行比较。这些很可能不匹配,即使两者都是“California”。使用对象(任何非原语的实例)时,您应该坚持使用. equals(),并在任何类中重新实现(覆盖)该方法,其中相等性需要不同于仅比较引用的地址。

此外,一定要尽量避开阴影。方法address()中的shippingCost与方法ship()中的shippingCost不同。是的,他们的名字一样,但都是本地人。然而,由于您的类没有shippingCost成员,仅仅因为它们的名称相同并不意味着它们代表相同的值。

如果您在order类中添加了shipping成本,那么您的代码就会中断,这仅仅是因为所有这些方法都有一个本地双shipping成本,它隐藏了订单类的this.shipping成本成员。所以也请记住这一点。

 类似资料:
  • 标签: Shell 条件判断:if语句 语法格式: if [ expression ] then Statement(s) to be executed if expression is true fi 注意:expression 和方括号([ ])之间必须有空格,否则会有语法错误。 if 语句通过关系运算符判断表达式的真假来决定执行哪个分支。Shell 有三种 if … else 语句:

  • 主要内容:IF 表达式,When 表达式IF 表达式 一个 if 语句包含一个布尔表达式和一条或多条语句。 我们也可以把 IF 表达式的结果赋值给一个变量。 这也说明我也不需要像Java那种有一个三元操作符,因为我们可以使用它来简单实现: 实例 输出结果为: 使用区间 使用 in 运算符来检测某个数字是否在指定区间内,区间格式为 x..y : 实例 输出结果为: When 表达式 when 将它的参数和所有的分支条件顺序比较,直到某个分

  • IF 表达式 一个 if 语句包含一个布尔表达式和一条或多条语句。 // 传统用法 var max = a if (a < b) max = b // 使用 else var max: Int if (a > b) { max = a } else { max = b } // 作为表达式 val max = if (a > b) a else b 我们也可以把 IF

  • Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。 可以通过下图来简单了解条件语句的执行过程: if 语句 Python中if语句的一般形式如下所示:if condition_1: statement_block_1 elif condition_2: statement_block_2 else: statement_block_3 如果 "cond

  • 在本章中,我们将讨论PL/SQL中的条件。决策结构要求程序员指定要由程序评估或测试一个或多个条件,以及如果条件确定为真(),则执行对应的语句块,以及可选地,如果执行其他语句条件被确定为假()。 以下是大多数编程语言中的典型条件(即决策)结构的一般形式 - PL/SQL编程语言提供以下类型的决策语句。请点击以下链接来查看它们的细节。 编号 语句 说明 1 if-then语句 语句将条件与关键字和包含

  • 目标 知道何时和如何使用关系运算符、条件运算符和控制语句 了解变量范围的概念和它的基本规则 熟悉三元运算符 关系和条件运算符 Java 语言提供了运算符和控制语句,可在代码中使用它们来制定决策。代码中的决策通常从一个布尔表达式(一个计算为 true 或 false 的表达式)开始。这些表达式使用关系运算符(用于将一个操作数与另一个操作数比较)和条件运算符。 表 1 列出了 Java 语言中的关系和