我正在尝试使用一系列JUnit Asserts对Java切换方法执行以下操作,但在两种情况下仍然使用“小于”和“大于”(请参阅下面的字符串/ int错误),并且不是确定如何使用“>”和“<”在我的情况下。
以下是我的代码后面的练习,然后是错误。
/*
Create a method which uses a switch statement to return a String representing the int passed in as a parameter to the method:
• given 1 return "One"
• given 2 return "Two"
• given 3 return "Three"
• given 4 return "Four"
• given an integer > 4, return "Too big"
• given an integer < 1, return "Too small"
*/
@Test
public void switchIntExample() {
assertEquals("One", stringRepInt(1));
assertEquals("Two", stringRepInt(2));
assertEquals("Three", stringRepInt(3));
assertEquals("Four", stringRepInt(4));
assertEquals("Too big.", stringRepInt(>4));
// assertEquals("Too small.", stringRepInt(<4));
}
//Switch statement for above:
public String stringRepInt(int numberSize) {
String numVar = null;
switch (numberSize) {
case 1:
numVar = "One";
break;
case 2:
numVar = "Two";
break;
case 3:
numVar = "Three";
break;
case 4:
numVar = "Four";
break;
//TODO: question on how to do LESS THAN and GREATER THAN:
// error line:
case (numVar > 4):
numVar = "Too big.";
break;
default:
break;
}
System.out.println(numVar);
return numVar;
}
错误: 错误:(293,27)java:二元运算符'&gt;'的错误操作数类型 第一种类型:java.lang.String 第二种类型:int
答案 0 :(得分:1)
case
语句仅支持常量表达式(您不能在case
中执行少于或大于numVar
,并且无法测试String
- {{1} } - 小于)。您可以使用if
等
public String stringRepInt(int numberSize) {
String numVar = null;
if (numberSize > 4) {
numVar = "Too big.";
} else {
switch (numberSize) {
case 1:
numVar = "One";
break;
case 2:
numVar = "Two";
break;
case 3:
numVar = "Three";
break;
case 4:
numVar = "Four";
break;
default:
break;
}
System.out.println(numVar);
return numVar;
}
答案 1 :(得分:0)
您应该将其添加到默认部分,如下所示:
default:
numVar = "Too Big";
break;
答案 2 :(得分:0)
默认部分的目的是处理交换机案例未处理的所有情况。您应该通过在默认部分中添加“if checks”来充分利用它(如评论中提到的@GreenMatt和@FredK),如下所示:
public String stringRepInt(int numberSize) {
String numVar = null;
switch (numberSize) {
case 1:
numVar = "One";
break;
case 2:
numVar = "Two";
break;
case 3:
numVar = "Three";
break;
case 4:
numVar = "Four";
break;
default:
if(numberSize > 4)
numVar = "Too big";
break;
}
System.out.println(numVar);
return numVar;
}
此外,如果要检查数字小于1,可以在if语句下添加else if (numberSize < 1) numVar = "Too small";
。这也很重要,因为它会阻止您的方法返回null
。 (如果用户输入的值小于1,则当前会发生这种情况)
结果代码如下:
public String stringRepInt(int numberSize) {
String numVar = null;
switch (numberSize) {
case 1:
numVar = "One";
break;
case 2:
numVar = "Two";
break;
case 3:
numVar = "Three";
break;
case 4:
numVar = "Four";
break;
default:
if(numberSize > 4)
numVar = "Too big";
else
numVar = "Too small";
break;
}
System.out.println(numVar);
return numVar;
}
答案 3 :(得分:-1)
在错误行中,您正在比较String和int。
error line: case (numVar > 4): numVar = "Too big."; break;
你已经将numVar声明为String并将其与int值4进行比较。请更正或者我认为您正在尝试将numberSize与值进行比较4.将该String转换为int并进行比较。