0

这周我正在接受 if-else 语句,我试图解决这个问题,但我仍然收到一条错误消息。谁能告诉我我做错了什么?请记住,这是一个if-else问题,但其他方法也将受到赞赏。

Clunker Motors Inc. 正在召回 1995-1998 和 2004-2006 年款的所有车辆。RECALL给定一个变量 modelYear,如果 modelYear 的值落在这两个范围内,则 编写一条语句,将消息打印到标准输出。

if(modelYear==1995||modelYear==1998)
{
    System.out.println("Recall");   
}
else if(modelYear==2004||modelYear==2006)
{
    System.out.println("Recall");
}
4

4 回答 4

1
if (modelYear==1995||modelYear==1998)

表示年份仅为 1995 年1998 年。所以 1996 年和 1997 年不会过去。

如果将语句替换为:

if (modelYear>=1995 && modelYear<=1998)

那么你表达的是 1995 到 1998 之间的范围。该陈述仅对整数 [1995, 1996, 1997, 1998] 成立。请注意从逻辑 OR( ||) 到逻辑 AND( &&) 的切换,这意味着两个比较检查都必须为真,条件表达式才能返回true

于 2012-10-23T09:15:22.753 回答
1

Clunker Motors Inc. 正在召回 1995-1998 和 2004-2006 年款的所有车辆

这意味着应该召回这些年份的 [1995, 1996, 1997, 1998] 和 [2004, 2005, 2006] 的模型。

你的情况:

if(modelYear==1995||modelYear==1998)

意味着只计算范围内的两年。[1996 年和 1997 年] 的模型将不会被召回。

要包括这两个范围,您可以执行以下操作:

if ((modelYear>=1995 && modelYear<=1998) || (modelYear>=2004 && modelYear<=2006))
{
    System.out.println("Recall");
}

或者

您应该创建一个单独的方法来检查范围:

boolean isYearWithinRange(int modelYear, int start, int end)
{
    return modelYear>=start && modelYear<=end;
}

if(isYearWithinRange(modelYear, 1995, 1998) || isYearWithinRange(modelYear, 2004, 2006))
{
    System.out.println("Recall");
}
于 2012-10-23T09:16:45.440 回答
0

您需要检查年份范围。您现在正在做的是测试确切的年份

于 2012-10-23T09:15:15.107 回答
-1
if(modelYear>=1995 && modelYear<=1998)
{
  System.out.println("Recall");   
}
else if(modelYear>=2004 && modelYear<=2006)
{
  System.out.println("Recall");
}
于 2012-10-23T09:15:41.113 回答