【发布时间】:2015-09-25 07:40:57
【问题描述】:
我的 Java 教科书问我以下错误:
switch (score)
{
case (score > 90):
grade = 'A';
break;
case (score > 80):
grade = 'B';
break;
default:
grade = 'C';
}
我已经知道错误在哪里了:
- Switch 语句不是为比较而构建的,例如
(score > 90);这适用于 if/else 语句。
但这让我想知道: switch 语句如何有效地解释整数范围?
我能想到的最明显的例子如下,但我觉得它相当暴力:
switch (score)
{
case 90: case 91: case 92: case 94: case 95:
case 96: case 97: case 98: case 99: case 100:
grade = 'A';
break;
case 80: case 81: case 82: case 84: case 85:
case 86: case 87: case 88: case 89:
grade = 'B';
break;
default:
grade = 'C';
}
这样的概念还能如何在 switch 语句中表达?
【问题讨论】:
-
为什么不允许你使用
if-else? -
使用 switch 语句没有其他方法可以做到这一点。这就是你使用 if 语句的原因:)
-
@Mark 您的问题我不清楚:从您的代码示例看来,您似乎已经知道 switch 语句可以做什么和不能做什么。因此,在上述情况下,您显然 不应该 使用它,因为您正在处理范围。当您要处理精确值时,使用 switch/case 可能是合适的。
-
蛮力法居然行不通!如果某人的分数是 92.4,会发生什么?
标签: java switch-statement