我刚刚开始学习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
您应该为该变量分配一个值。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;
}
}
试试这个:
// 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 语言中的关系和